Prepared By:
Mr. Dhrumil Patel
iFour ConsultancyEntity Framework
 Writing and managing ADO.Net code for data access is a tedious and monotonous job.
Microsoft has provided an O/RM framework called "Entity Framework" to automate
database related activities for your application.
 The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping (ORM)
framework that enables developers to work with relational data as domain-specific
objects, eliminating the need for most of the data access plumbing code that developers
usually need to write. Using the Entity Framework, developers issue queries using LINQ,
then retrieve and manipulate data as strongly typed objects. The Entity Framework's ORM
implementation provides services like change tracking, identity resolution, lazy loading,
and query translation so that developers can focus on their application-specific business
logic rather than the data access fundamentals.
Entity Framework
Application Development Company Indiahttp://www.ifourtechnolab.com
 The Entity Framework is a mature ORM from Microsoft and can be used with a wide
variety of databases.
 There are three approaches to modeling entities using Entity Framework:
 Code First
 Database First
 Model First
Entity Framework Approaches
Application Development Company Indiahttp://www.ifourtechnolab.com
 The Code First approach helps you to create the entities in your application by focusing on
the domain requirements.
 In essence, you can follow Domain Driven Design (DDD) using this approach. Once your
entities have been defined and the configurations specified, you can create the database
on the fly using both.
 The Code First approach gives you more control over your code -- you don't need to work
with auto generated code anymore.
 If you have the domain classes ready, you can easily create your database from the domain
classes.
Code First
Application Development Company Indiahttp://www.ifourtechnolab.com
 The downside to this approach is that any changes to the underlying database schema
would be lost; in this approach your code defines and creates the database.
 The Code First approach allows you to use Entity Framework and define the entity model
sans the designer or XML files.
 You can use the POCO (Plain Old CLR Objects) approach to define the model and generate
your database.
 In this approach you would typically create the entity classes. Here's an example; a typical
entity class is given below:
public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public float Price { get; set; }
}
Code First (Cont.)
Application Development Company Indiahttp://www.ifourtechnolab.com
 Next, you should define a custom data context by extending the DbContext class as shown
below:
public class IDGContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
 Lastly, you should specify the connection string in the configuration file.
Code First (Cont.)
Application Development Company Indiahttp://www.ifourtechnolab.com
 You can use the Database First approach if the database is already designed and is ready.
 In this approach, the Entity Data Model (EDM) is created from the underlying database.
 As an example, you use the database first approach when you generate the edmx files in
the Visual Studio IDE from the database.
 Manual changes to the database is possible easily and you can always update the EDM if
need be (for example, if the schema of the underlying database changes).
 To do this, simply update the EDM from the database in the Visual Studio IDE.
Database First
Application Development Company Indiahttp://www.ifourtechnolab.com
 In the Model First approach you can create the EDM first, then generate the database
from it.
 You would typically create an empty EDM using the Entity Data Model Wizard in Visual
Studio, define the entities and their relationships in Visual Studio, then generate the
database from this defined model.
 You can easily create entities and define their relationships and associations in the
designer in Visual Studio. You can also specify the Key property and the data types for the
properties for your entities using the designer. You can use partial classes to implement
additional features in your entities.
Model First
Application Development Company Indiahttp://www.ifourtechnolab.com
 OK, but when should you use the Model First approach? Well, if neither the domain
classes nor the database is ready and you would rather define the data model using a
visual designer, this approach is for you. However, like in the Code First approach, in the
Model First approach manual changes to the database would be lost as the model defines
the database.
Model First (Cont.)
Application Development Company Indiahttp://www.ifourtechnolab.com
 Entity framework supports three types of relationships, same as database:
 One to One
 One to Many
 Many to Many
Entity Relationships
Application Development Company Indiahttp://www.ifourtechnolab.com
 As you can see in the above figure, Student and StudentAddress have a One-to-One
relationship (zero or one).
 A student can have only one or zero address. Entity framework adds Student navigation
property into StudentAddress entity and StudentAddress navigation entity into Student
entity.
 Also, StudentAddress entity has StudentId property as PrimaryKey which makes it a
One-to-One relationship.
 As you can see in the below code, Student entity class includes StudentAddress navigation
property and StudentAddress includes Student navigation property with foreign key
property StudentId. This way EF handles one-to-one relationship between entities.
One-To-One Relationship
Application Development Company Indiahttp://www.ifourtechnolab.com
 Example:
public partial class Student
{
public Student()
{
this.Courses = new HashSet<Course>();
}
public int StudentID { get; set; }
public string StudentName { get; set; }
public Nullable<int> StandardId { get; set; }
public byte[] RowVersion { get; set; }
public virtual Standard Standard { get; set; }
public virtual StudentAddress StudentAddress { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
One-To-One Relationship (Cont.)
Application Development Company Indiahttp://www.ifourtechnolab.com
public partial class StudentAddress
{
public int StudentID { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public virtual Student Student { get; set; }
}
One-To-One Relationship (Cont.)
Application Development Company Indiahttp://www.ifourtechnolab.com
 The Standard and Teacher entities have a One-to-Many relationship marked by multiplicity
where 1 is for One and * is for many. This means that Standard can have many Teachers
whereas Teacher can associate with only one Standard.
 To represent this, The Standard entity has the collection navigation property Teachers
(please notice that it's plural), which indicates that one Standard can have a collection of
Teachers (many teachers). And Teacher entity has a Standard navigation property (Not a
Collection) which indicates that Teacher is associated with one Standard. Also, it contains
StandardId foreign key (StandardId is a PK in Standard entity). This makes it One-to-Many
relationship.
One-To-Many Relationship
Application Development Company Indiahttp://www.ifourtechnolab.com
 Example:
public partial class Standard
{
public Standard()
{
this.Students = new HashSet<Student>();
this.Teachers = new HashSet<Teacher>();
}
public int StandardId { get; set; }
public string StandardName { get; set; }
public string Description { get; set; }
public virtual ICollection<Student> Students { get; set; }
public virtual ICollection<Teacher> Teachers { get; set; }
}
One-To-Many Relationship (Cont.)
Application Development Company Indiahttp://www.ifourtechnolab.com
public partial class Teacher
{
public Teacher()
{
this.Courses = new HashSet<Course>();
}
public int TeacherId { get; set; }
public string TeacherName { get; set; }
public Nullable<int> StandardId { get; set; }
public Nullable<int> TeacherType { get; set; }
public virtual ICollection<Course> Courses { get; set; }
public virtual Standard Standard { get; set; }
}
One-To-Many Relationship (Cont.)
Application Development Company Indiahttp://www.ifourtechnolab.com
 Student and Course have Many-to-Many relationships marked by * multiplicity. It means
one Student can enrol for many Courses and also, one Course can be be taught to many
Students.
 The database design includes StudentCourse joining table which includes the primary key
of both the tables (Student and Course table). Entity Framework represents many-to-many
relationships by not having entityset for the joining table in CSDL, instead it manages this
through mapping.
Many-to-Many Relationship
Application Development Company Indiahttp://www.ifourtechnolab.com
 Example:
public partial class Student
{
public Student()
{
this.Courses = new HashSet<Course>();
}
public int StudentID { get; set; }
public string StudentName { get; set; }
public Nullable<int> StandardId { get; set; }
public byte[] RowVersion { get; set; }
public virtual Standard Standard { get; set; }
public virtual StudentAddress StudentAddress { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
Many-To-Many Relationship (Cont.)
Application Development Company Indiahttp://www.ifourtechnolab.com
public partial class Course
{
public Course()
{
this.Students = new HashSet<Student>();
}
public int CourseId { get; set; }
public string CourseName { get; set; }
public System.Data.Entity.Spatial.DbGeography Location { get; set; }
public Nullable<int> TeacherId { get; set; }
public virtual Teacher Teacher { get; set; }
public virtual ICollection<Student> Students { get; set; }
}
Many-To-Many Relationship (Cont.)
Application Development Company Indiahttp://www.ifourtechnolab.com
Thank you
Software development company indiahttp://www.ifourtechnolab.com

Overview of entity framework by software outsourcing company india

  • 1.
    Prepared By: Mr. DhrumilPatel iFour ConsultancyEntity Framework
  • 2.
     Writing andmanaging ADO.Net code for data access is a tedious and monotonous job. Microsoft has provided an O/RM framework called "Entity Framework" to automate database related activities for your application.  The Microsoft ADO.NET Entity Framework is an Object/Relational Mapping (ORM) framework that enables developers to work with relational data as domain-specific objects, eliminating the need for most of the data access plumbing code that developers usually need to write. Using the Entity Framework, developers issue queries using LINQ, then retrieve and manipulate data as strongly typed objects. The Entity Framework's ORM implementation provides services like change tracking, identity resolution, lazy loading, and query translation so that developers can focus on their application-specific business logic rather than the data access fundamentals. Entity Framework Application Development Company Indiahttp://www.ifourtechnolab.com
  • 3.
     The EntityFramework is a mature ORM from Microsoft and can be used with a wide variety of databases.  There are three approaches to modeling entities using Entity Framework:  Code First  Database First  Model First Entity Framework Approaches Application Development Company Indiahttp://www.ifourtechnolab.com
  • 4.
     The CodeFirst approach helps you to create the entities in your application by focusing on the domain requirements.  In essence, you can follow Domain Driven Design (DDD) using this approach. Once your entities have been defined and the configurations specified, you can create the database on the fly using both.  The Code First approach gives you more control over your code -- you don't need to work with auto generated code anymore.  If you have the domain classes ready, you can easily create your database from the domain classes. Code First Application Development Company Indiahttp://www.ifourtechnolab.com
  • 5.
     The downsideto this approach is that any changes to the underlying database schema would be lost; in this approach your code defines and creates the database.  The Code First approach allows you to use Entity Framework and define the entity model sans the designer or XML files.  You can use the POCO (Plain Old CLR Objects) approach to define the model and generate your database.  In this approach you would typically create the entity classes. Here's an example; a typical entity class is given below: public class Product { public int ProductId { get; set; } public string ProductName { get; set; } public float Price { get; set; } } Code First (Cont.) Application Development Company Indiahttp://www.ifourtechnolab.com
  • 6.
     Next, youshould define a custom data context by extending the DbContext class as shown below: public class IDGContext : DbContext { public DbSet<Product> Products { get; set; } }  Lastly, you should specify the connection string in the configuration file. Code First (Cont.) Application Development Company Indiahttp://www.ifourtechnolab.com
  • 7.
     You canuse the Database First approach if the database is already designed and is ready.  In this approach, the Entity Data Model (EDM) is created from the underlying database.  As an example, you use the database first approach when you generate the edmx files in the Visual Studio IDE from the database.  Manual changes to the database is possible easily and you can always update the EDM if need be (for example, if the schema of the underlying database changes).  To do this, simply update the EDM from the database in the Visual Studio IDE. Database First Application Development Company Indiahttp://www.ifourtechnolab.com
  • 8.
     In theModel First approach you can create the EDM first, then generate the database from it.  You would typically create an empty EDM using the Entity Data Model Wizard in Visual Studio, define the entities and their relationships in Visual Studio, then generate the database from this defined model.  You can easily create entities and define their relationships and associations in the designer in Visual Studio. You can also specify the Key property and the data types for the properties for your entities using the designer. You can use partial classes to implement additional features in your entities. Model First Application Development Company Indiahttp://www.ifourtechnolab.com
  • 9.
     OK, butwhen should you use the Model First approach? Well, if neither the domain classes nor the database is ready and you would rather define the data model using a visual designer, this approach is for you. However, like in the Code First approach, in the Model First approach manual changes to the database would be lost as the model defines the database. Model First (Cont.) Application Development Company Indiahttp://www.ifourtechnolab.com
  • 10.
     Entity frameworksupports three types of relationships, same as database:  One to One  One to Many  Many to Many Entity Relationships Application Development Company Indiahttp://www.ifourtechnolab.com
  • 11.
     As youcan see in the above figure, Student and StudentAddress have a One-to-One relationship (zero or one).  A student can have only one or zero address. Entity framework adds Student navigation property into StudentAddress entity and StudentAddress navigation entity into Student entity.  Also, StudentAddress entity has StudentId property as PrimaryKey which makes it a One-to-One relationship.  As you can see in the below code, Student entity class includes StudentAddress navigation property and StudentAddress includes Student navigation property with foreign key property StudentId. This way EF handles one-to-one relationship between entities. One-To-One Relationship Application Development Company Indiahttp://www.ifourtechnolab.com
  • 12.
     Example: public partialclass Student { public Student() { this.Courses = new HashSet<Course>(); } public int StudentID { get; set; } public string StudentName { get; set; } public Nullable<int> StandardId { get; set; } public byte[] RowVersion { get; set; } public virtual Standard Standard { get; set; } public virtual StudentAddress StudentAddress { get; set; } public virtual ICollection<Course> Courses { get; set; } } One-To-One Relationship (Cont.) Application Development Company Indiahttp://www.ifourtechnolab.com
  • 13.
    public partial classStudentAddress { public int StudentID { get; set; } public string Address1 { get; set; } public string Address2 { get; set; } public string City { get; set; } public string State { get; set; } public virtual Student Student { get; set; } } One-To-One Relationship (Cont.) Application Development Company Indiahttp://www.ifourtechnolab.com
  • 14.
     The Standardand Teacher entities have a One-to-Many relationship marked by multiplicity where 1 is for One and * is for many. This means that Standard can have many Teachers whereas Teacher can associate with only one Standard.  To represent this, The Standard entity has the collection navigation property Teachers (please notice that it's plural), which indicates that one Standard can have a collection of Teachers (many teachers). And Teacher entity has a Standard navigation property (Not a Collection) which indicates that Teacher is associated with one Standard. Also, it contains StandardId foreign key (StandardId is a PK in Standard entity). This makes it One-to-Many relationship. One-To-Many Relationship Application Development Company Indiahttp://www.ifourtechnolab.com
  • 15.
     Example: public partialclass Standard { public Standard() { this.Students = new HashSet<Student>(); this.Teachers = new HashSet<Teacher>(); } public int StandardId { get; set; } public string StandardName { get; set; } public string Description { get; set; } public virtual ICollection<Student> Students { get; set; } public virtual ICollection<Teacher> Teachers { get; set; } } One-To-Many Relationship (Cont.) Application Development Company Indiahttp://www.ifourtechnolab.com
  • 16.
    public partial classTeacher { public Teacher() { this.Courses = new HashSet<Course>(); } public int TeacherId { get; set; } public string TeacherName { get; set; } public Nullable<int> StandardId { get; set; } public Nullable<int> TeacherType { get; set; } public virtual ICollection<Course> Courses { get; set; } public virtual Standard Standard { get; set; } } One-To-Many Relationship (Cont.) Application Development Company Indiahttp://www.ifourtechnolab.com
  • 17.
     Student andCourse have Many-to-Many relationships marked by * multiplicity. It means one Student can enrol for many Courses and also, one Course can be be taught to many Students.  The database design includes StudentCourse joining table which includes the primary key of both the tables (Student and Course table). Entity Framework represents many-to-many relationships by not having entityset for the joining table in CSDL, instead it manages this through mapping. Many-to-Many Relationship Application Development Company Indiahttp://www.ifourtechnolab.com
  • 18.
     Example: public partialclass Student { public Student() { this.Courses = new HashSet<Course>(); } public int StudentID { get; set; } public string StudentName { get; set; } public Nullable<int> StandardId { get; set; } public byte[] RowVersion { get; set; } public virtual Standard Standard { get; set; } public virtual StudentAddress StudentAddress { get; set; } public virtual ICollection<Course> Courses { get; set; } } Many-To-Many Relationship (Cont.) Application Development Company Indiahttp://www.ifourtechnolab.com
  • 19.
    public partial classCourse { public Course() { this.Students = new HashSet<Student>(); } public int CourseId { get; set; } public string CourseName { get; set; } public System.Data.Entity.Spatial.DbGeography Location { get; set; } public Nullable<int> TeacherId { get; set; } public virtual Teacher Teacher { get; set; } public virtual ICollection<Student> Students { get; set; } } Many-To-Many Relationship (Cont.) Application Development Company Indiahttp://www.ifourtechnolab.com
  • 20.
    Thank you Software developmentcompany indiahttp://www.ifourtechnolab.com

Editor's Notes

  • #3 Application Development Company India - http://www.ifourtechnolab.com/
  • #4 Application Development Company India - http://www.ifourtechnolab.com/
  • #5 Application Development Company India - http://www.ifourtechnolab.com/
  • #6 Application Development Company India - http://www.ifourtechnolab.com/
  • #7 Application Development Company India - http://www.ifourtechnolab.com/
  • #8 Application Development Company India - http://www.ifourtechnolab.com/
  • #9 Application Development Company India - http://www.ifourtechnolab.com/
  • #10 Application Development Company India - http://www.ifourtechnolab.com/
  • #11 Application Development Company India - http://www.ifourtechnolab.com/
  • #12 Application Development Company India - http://www.ifourtechnolab.com/
  • #13 Application Development Company India - http://www.ifourtechnolab.com/
  • #14 Application Development Company India - http://www.ifourtechnolab.com/
  • #15 Application Development Company India - http://www.ifourtechnolab.com/
  • #16 Application Development Company India - http://www.ifourtechnolab.com/
  • #17 Application Development Company India - http://www.ifourtechnolab.com/
  • #18 Application Development Company India - http://www.ifourtechnolab.com/
  • #19 Application Development Company India - http://www.ifourtechnolab.com/
  • #20 Application Development Company India - http://www.ifourtechnolab.com/
  • #21 Software Outsourcing Company India - http://www.ifourtechnolab.com/