30
iFour Consultancy Entity Framework

Entity framework by asp.net MVC development company in india

Embed Size (px)

Citation preview

Page 1: Entity framework  by asp.net MVC development company in india

iFour Consultancy

Entity Framework

Page 2: Entity framework  by asp.net MVC development company in india

Entity FrameworkEntity Framework ApproachesCode FirstDatabase FirstModel FirstEntity RelationshipsOne-To-One RelationshipOne-To-Many RelationshipMany-to-Many RelationshipRepository Pattern in MVCCREATING REPOSITORYHow to use Repository?

INDEX

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 3: Entity framework  by asp.net MVC development company in india

Writing and managing ADO.NET code for data access is a tedious and monotonous job. Microsoft has provided an ORM framework called "Entity Framework" to automate database related activities for application

Object/Relational Mapping (ORM) framework that enables 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

Entity Framework

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 4: Entity framework  by asp.net MVC development company in india

It 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 FirstDatabase FirstModel First

Entity Framework Approaches

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 5: Entity framework  by asp.net MVC development company in india

This helps to create the entities in your application by focusing on the domain requirements

Once entities have been defined and the configurations specified, create the database It gives more control over code - Don't need to work with auto generated code anymore If domain classes are ready then create database from the domain classes

Code First

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 6: Entity framework  by asp.net MVC development company in india

The downside to this approach is that any changes to the underlying database schema would be lost; in this approach code defines and creates the database

This approach allows to use Entity Framework and define the entity model sans the designer or XML files

Use the POCO (Plain Old CLR Objects) approach to define the model and generate database In this approach, 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.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 7: Entity framework  by asp.net MVC development company in india

Next, define a custom data context by extending the DbContext class as shown below:public class IDGContext : DbContext

{ public DbSet<Product> Products { get; set; } }

Lastly, specify the connection string in the configuration file

Code First (Cont.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 8: Entity framework  by asp.net MVC development company in india

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, use the database first approach when generating the edmx files in the

Visual Studio IDE from the database Manual changes to the database is possible easily and 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

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 9: Entity framework  by asp.net MVC development company in india

In the Model First approach create the EDM first, then generate the database from it 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

Create entities and define their relationships and associations in the designer in Visual Studio

Specify the Key property and the data types for the properties for entities using the designer. Use partial classes to implement additional features in entities

Model First

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 10: Entity framework  by asp.net MVC development company in india

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.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 11: Entity framework  by asp.net MVC development company in india

Entity framework supports three types of relationships, same as database:One to OneOne to ManyMany to Many

Entity Relationships

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 12: Entity framework  by asp.net MVC development company in india

As per relationship 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 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

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 13: Entity framework  by asp.net MVC development company in india

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.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 14: Entity framework  by asp.net MVC development company in india

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.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 15: Entity framework  by asp.net MVC development company in india

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

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 16: Entity framework  by asp.net MVC development company in india

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.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 17: Entity framework  by asp.net MVC development company in india

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.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 18: Entity framework  by asp.net MVC development company in india

Student and Course have Many-to-Many relationships marked by * multiplicity. It means one Student can enroll 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

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 19: Entity framework  by asp.net MVC development company in india

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.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 20: Entity framework  by asp.net MVC development company in india

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.)

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 21: Entity framework  by asp.net MVC development company in india

The Repository pattern is intended to create an abstraction layer between the data access layer and the business logic layer of an application

Data access pattern that prompts a more loosely coupled approach to data access Create the data access logic in a separate class, or set of classes, called a repository, with the

responsibility of persisting the application's business model. MVC controllers interact with repositories to load and persist an application business model. By taking

advantage of dependency injection (DI), repositories can be injected into a controller's constructor. Benefits :

Centralizes the data logic or Web service access logic Reduce redundancy of code Faster development Provides a flexible architecture that can be adapted as the overall design of the application evolves

Repository Pattern in MVC

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 22: Entity framework  by asp.net MVC development company in india

Step 1: Open up our existing MVC application in Visual Studio, that we created in the third part to interact with database with the help of Entity Framework

Step 2: Create a folder named Repository and add an Interface to that folder named IEmployeeRepository, this interface we derive from IDisposable type of interface. We’ll declare methods for CRUD operations on User entity class over here, choose the names of the method as per choice, but those should be easy to understand and follow

CREATING REPOSITORY

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 23: Entity framework  by asp.net MVC development company in india

Step 3: Extract a class from that interface and call it EmployeeRepository. This EmployeeRepository class will implement all the methods of that interface, but with the help of Entity Framework.

Now here comes the use of our DBContext class MVCEntities, we already have this class in our existing solution, so we don’t have to touch this class, simply, write our business logic in the interface methods implemented in EmployeeRepository class:

CREATING REPOSITORY

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 24: Entity framework  by asp.net MVC development company in india

CREATING REPOSITORY

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 25: Entity framework  by asp.net MVC development company in india

How to use Repository?

Step 4: Go to the controller, declare the IEmployeeRepository reference, and in the constructor initialize the object with EmployeeRepository class, passing DBContext(RepositoryContext) to the constructor as parameter we defined in EmployeeRepository class:

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 26: Entity framework  by asp.net MVC development company in india

Crud operations using Repository

Get All Employees

Get Single Employee Detail

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 27: Entity framework  by asp.net MVC development company in india

Crud operation using Repository

Insert Employee

Update Employee

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 28: Entity framework  by asp.net MVC development company in india

Crud operation using Repository

Delete Employee

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 29: Entity framework  by asp.net MVC development company in india

http://www.tutorialspoint.com/entity_framework/ http://www.entityframeworktutorial.net/ http://www.entityframeworktutorial.net/what-is-entityframework.aspx

References

http://www.ifourtechnolab.com/

C# Software Development Companies India

Page 30: Entity framework  by asp.net MVC development company in india

Questions?

http://www.ifourtechnolab.com/

C# Software Development Companies India