1 Entity Framework Introduction. Outline Goals of Entity Framework 2.
Entity Framework
description
Transcript of Entity Framework
Entity FrameworkJorge Fioranelli | b: blog.jorgef.net | e: [email protected]
Agenda
IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4
Versions
Version 1 .Net 3.5 sp1 EF 3.5
Version 2 .Net 4 EF 4(aka EF )
EF and LINQ2SQL
Data Programmability
Team
Entity Framework
ESQL
Language Development Team
LINQ2SQL
LINQ
Data Programmability
Team
Entity Framework
ESQL
Language Development Team
LINQ2SQL
LINQ
LINQ
Data Programmability
Team
Entity Framework
ESQL
LINQ2SQL
LINQ
LINQ
Future
“If you’re a .NET developer, Entity Framework is where we’re going.
We’re there. Get on board, it’s time.”
Don Box, PDC 2009
Source: Programming Entity Framework 2nd Edition, Julia Lerman
New EF4 Features Customizable Code-
Generation Design-time support for
Complex Types Pluralization Multi-Targeting Support Persistence Ignorance &
POCO Self-Tracking Entities & N-
Tier support Application Patterns and
Testability Foreign Key Associations Lazy Loading
More LINQ Operators in LINQ to Entities
CreateDatabase and DDL Provider Services
Model Defined Functions LINQ support
EntityDataSource support for QueryExtender, POCO and FKs
ObjectMaterialized event Generated SQL
improvements for better performance and readability
Ad-hoc native query support
Entity Data Model
Entity Framework evolves from “Entity Relationship Modeling” (Dr. Peter Chen – 1976)
In 2006 Microsoft Research published the first paper on “Entity Data Model”
Tables Objects
Entity Data Model (EDMX)
Storage Model (SSDL)
Mappings (MSL)
Conceptual Model (CSDL)
Model First
Code First (CTP4)Database First
Database, Model or Code First
DB
Model
Code
DB
Model
Code
DB
Model
(no visual)
Code
Demo 1Introduction
Agenda
IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4
Associations
Early Load
Deferred Load Explicit Load
Lazy Load
context.Products.Include("Category")
product.CategoryReference.Load()
product.Category
context.LoadProperty(product, p => p.Category)
context.Products.Include(p => p.Category) //CTP4
Updating Entities
context DB
Change Tracking
productNameColor
var product = ... //queryproduct.Name = "New Name";product.Color = "Blue";context.SaveChanges();
Update (on SaveChanges)
Query Result
Inserting Entities
context DBnewCateg
ory
Insert (on SaveChanges)
var newCategory = new Category() {...};context.Categories.AddObject(newCategory);context.SaveChanges();
Add Object
Change Tracking
Inserting Entities by Association
context DB
Change Tracking
productCategoryCategoryI
D
newCategory
Insert (on SaveChanges)
var product = ... //queryvar newCategory = new Category();product.Category = newCategory;context.SaveChanges();
Add Association
Query Result
Deleting Entities
context DB
Change Tracking
orderDetail
Delete (on SaveChanges)Delete Object
Query Result
var orderDetail = ... //querycontext.OrderDetails.DeleteObject(orderDetail);context.SaveChanges();
Attaching Entities
context DBexistingCateg
ory
Update (on SaveChanges)
var existingCategory = new Category() {...};existingCategory.Name = "Old Name"; // no change trackingcontext.ProductCategories.Attach(existingCategory);existingCategory.Name = "New Name";context.SaveChanges();
Attach
Change Tracking
Demo 2Basic Operations
Agenda
IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4
Plain Old CLR Objects (POCOs)
EntityObjectEntityReference
EntityCollection
Relationship Manager
Property Change Events
POCO Entity
VS
Entity
Demo 3Plain Old CLR Objects
Agenda
IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4
Code First (CTP4)Database First
Code Generation
DB
Model
Code
DB
Model
Code
Model First DB
Model
(no visual)
Code
Demo 4Code Generation
Agenda
IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4
Unit Testing
Repository
UnitOfWork
DBEntity
ServiceView
Controller
Model
common unit testing scopeunit tests
for Repositories
Unit Testing
ObjectContext
ObjectSet<T>
IObjectSet<T>
ObjectQuery<T>
NorthwindCtxObjectSet
<Product>
ProductRepository
CategoryRepository
ObjectSet<Category
>
Unit Testing
ObjectContext
ObjectSet<T>
IObjectSet<T>
ObjectQuery<T>
NorthwindCtxIObjectSet
<Product>
ProductRepository
CategoryRepository
IObjectSet
<Category>
INorthwindCtx
Demo 5Unit Testing
Agenda
IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4
Self-tracking Entities
context DB
Change Tracking
product
Query Result
Client product
No Change Tracking
EF change tracking
context DB
Change Tracking
product
Query Result
Client product
Change Tracking
State + Changes are transferred
Self-tracking Entities
Update
Update?
N-Tiers with POCOs
context DB
Change Tracking
product
Query Result
Client product
Change Tracking
State + Changes are transferred
Self-tracking Entities
context DB
product
Query Result
Client product
Just POCO’s state is transferred
POCO Entities
Update
Update
Demo 6 – Demo 7N-Tiers
Agenda
IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4
Code First (CTP4)
Model First
Database First
Code First (Community Technical Preview 4)
DB
Model
Code
DB
Model
Code
DB
Model
(no visual)
Code
Productivity Improvements(Community Technical Preview 4)
DbContext
NorthwindCtxDbSet
<Product>DbSet
<Category>
ObjectContext
NorthwindCtxObjectSet<Product>ObjectSet<Category
>ObjectConte
xt
Demo 8Community Technical Preview 4
Out of Scope
Table Splitting Inheritance Complex types Entity SQL Transactions Concurrency SPs, Views and Functions
Resources
Programming Entity Framework 2nd Edition – Julia Lerman
ADO.NET Team Bloghttp://blogs.msdn.com/adonet
EF Design Bloghttp://blogs.msdn.com/efdesign
Data Developer Centerhttp://msdn.com/data
Entity Framework Forumhttp://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework
Resources PDC 2010 video:
Code First Development with Entity Framework http://player.microsoftpdc.com/Session/68cfa011-c399-4151-ad9f-748d8723a19d
Tech-ed 2010 videos: Data Development GPS
http://www.msteched.com/2010/NorthAmerica/DEV324 Overview of the Microsoft ADO.NET Entity Framework 4.0
http://www.msteched.com/2010/NorthAmerica/DEV205 Deep Dive into Microsoft ADO.NET Entity Framework
http://www.msteched.com/2010/NorthAmerica/DEV305
PDC 2009 video: Evolving ADO.NET Entity Framework in .NET 4 and Beyond
http://www.microsoftpdc.com/2009/FT10
QuestionsJorge Fioranelli | b: blog.jorgef.net | e: [email protected]