Wednesday, August 29, 2012

ENTITY FRAMEWORK LESSION 1.



Microsoft entity framework is ORM (object relation mapping) that enables developer to work
with relational database and domain sepecific objects.It skips the code that we was writing in earlier times to get data from database. Now developers issues queries using LINQ, then retrieve and manipulate the data as strongly typed objects.ORM implementation provides services like: change tracking, identity resolution, lazy loading and query translation. Now developers only need to focus on business logic rather than fetching data from database.

It is an enhancement to ADO.NET that gives developers an automated mechanism for accessing & storing the data in database and working with the results in addition to DataReader and DataSet.

O/RM includes three main parts: Domain class objects, Relational database objects and Mapping information on how domain objects maps to relational database objects (tables, views & storedprocedures). ORM helps us to keep our database design separate from our domain class design. This makes application maintainable and extendable. It also automates standard CRUD operation (Create, Read, Update & Delete) so developer doesn’t need to write it manually.

here are many ORM frameworks for .net in the market like DataObjects.Net, NHibernate, OpenAccess, SubSonic etc . ADO.NET Entity Framework is from Microsoft.

Differences between entiry framework and LINQ to sql
1.Entity framework supports not only SQL Server but also other database like Oracle, DB2, MySQL etc.
2.Most of the time L2S classes must be one-to-one with database objects e.g. Customer class can be mapped only with Customer table. On other hand in Entity Framework we can map domain class with multiple tables using various inheritance strategies like table per type (class) or table per hierarchy of classes etc.
3. We can also follow mutliple techniques using entity framework like code first, model first or database first. Now no  longer dependencies on old techniques.
4. In upcoming products microsoft also giving support and integration of entity framework.

ENTITY FRAMEWORK ARCHITECHTURE (GOT FROM A ANOTHER WEBSITE IT IS NOT MINE):
Following figure shows the overall architecture of the Entity Framework. Let’s see each component of the architecture:





EDM (Entity Data Model): EDM consist three main parts- Conceptual model, Mapping and Storage model.  
Conceptual Model: Conceptual model is our model classes and their relationships. This will be independent from our database table design. 
Storage Model: Storage model is our database design model which includes tables, views, stored procedures and their relationships and keys. 
Mapping: Mapping consist information about how our conceptual model is mapped to storage model. 
LINQ to Entities:LINQ to Entities is query language used to write queries against the object model. It returns entities which are defined in the conceptual model. We can use your LINQ skills here.

Entity SQL: Entity SQL is again a query language same as LINQ to Entities. However it is little more difficult than L2E and also developer need to learn it separately. 
Object Service: Object service is a main entry point for accessing data from database and to return it back. Object service is responsible for materialization which is process of converting data returned from entity client data provider (next layer) to an entity object structure.  
Entity Client Data Provider: The main responsibility of this layer is to convert L2E or Entity SQL queries into SQL query which is understood by underlying database. It communicates with ADO.Net data provider which in turn sends or retrieves data from database.
ADO.Net Data Provider: This layer communicates with database using standard ADO.Net.

I'll do more posting on this topic very soon, because entity framework 4.5 is knocking the door. :)