Entity Framework

40
Entity Framework Jorge Fioranelli | b: blog.jorgef.net | e: [email protected]

description

Jorge Fioranelli | b: blog.jorgef.net | e: [email protected]. Entity Framework. Agenda. Introduction Basic Concepts POCOs Code Generation Unit Testing N-Tiers CTP4. Versions. Version 1. EF 3.5. .Net 3.5 sp1. Version 2. EF 4 (aka EF ). .Net 4. EF and LINQ2SQL. - PowerPoint PPT Presentation

Transcript of Entity Framework

Page 1: Entity Framework

Entity FrameworkJorge Fioranelli | b: blog.jorgef.net | e: [email protected]

Page 2: Entity Framework

Agenda

IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4

Page 3: Entity Framework

Versions

Version 1 .Net 3.5 sp1 EF 3.5

Version 2 .Net 4 EF 4(aka EF )

Page 4: Entity Framework

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

Page 5: Entity Framework

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

Page 6: Entity Framework

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

Page 7: Entity Framework

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)

Page 8: Entity Framework

Model First

Code First (CTP4)Database First

Database, Model or Code First

DB

Model

Code

DB

Model

Code

DB

Model

(no visual)

Code

Page 9: Entity Framework

Demo 1Introduction

Page 10: Entity Framework

Agenda

IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4

Page 11: Entity Framework

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

Page 12: Entity Framework

Updating Entities

context DB

Change Tracking

productNameColor

var product = ... //queryproduct.Name = "New Name";product.Color = "Blue";context.SaveChanges();

Update (on SaveChanges)

Query Result

Page 13: Entity Framework

Inserting Entities

context DBnewCateg

ory

Insert (on SaveChanges)

var newCategory = new Category() {...};context.Categories.AddObject(newCategory);context.SaveChanges();

Add Object

Change Tracking

Page 14: Entity Framework

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

Page 15: Entity Framework

Deleting Entities

context DB

Change Tracking

orderDetail

Delete (on SaveChanges)Delete Object

Query Result

var orderDetail = ... //querycontext.OrderDetails.DeleteObject(orderDetail);context.SaveChanges();

Page 16: Entity Framework

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

Page 17: Entity Framework

Demo 2Basic Operations

Page 18: Entity Framework

Agenda

IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4

Page 19: Entity Framework

Plain Old CLR Objects (POCOs)

EntityObjectEntityReference

EntityCollection

Relationship Manager

Property Change Events

POCO Entity

VS

Entity

Page 20: Entity Framework

Demo 3Plain Old CLR Objects

Page 21: Entity Framework

Agenda

IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4

Page 22: Entity Framework

Code First (CTP4)Database First

Code Generation

DB

Model

Code

DB

Model

Code

Model First DB

Model

(no visual)

Code

Page 23: Entity Framework

Demo 4Code Generation

Page 24: Entity Framework

Agenda

IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4

Page 25: Entity Framework

Unit Testing

Repository

UnitOfWork

DBEntity

ServiceView

Controller

Model

common unit testing scopeunit tests

for Repositories

Page 26: Entity Framework

Unit Testing

ObjectContext

ObjectSet<T>

IObjectSet<T>

ObjectQuery<T>

NorthwindCtxObjectSet

<Product>

ProductRepository

CategoryRepository

ObjectSet<Category

>

Page 27: Entity Framework

Unit Testing

ObjectContext

ObjectSet<T>

IObjectSet<T>

ObjectQuery<T>

NorthwindCtxIObjectSet

<Product>

ProductRepository

CategoryRepository

IObjectSet

<Category>

INorthwindCtx

Page 28: Entity Framework

Demo 5Unit Testing

Page 29: Entity Framework

Agenda

IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4

Page 30: Entity Framework

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?

Page 31: Entity Framework

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

Page 32: Entity Framework

Demo 6 – Demo 7N-Tiers

Page 33: Entity Framework

Agenda

IntroductionBasic ConceptsPOCOsCode GenerationUnit TestingN-TiersCTP4

Page 34: Entity Framework

Code First (CTP4)

Model First

Database First

Code First (Community Technical Preview 4)

DB

Model

Code

DB

Model

Code

DB

Model

(no visual)

Code

Page 35: Entity Framework

Productivity Improvements(Community Technical Preview 4)

DbContext

NorthwindCtxDbSet

<Product>DbSet

<Category>

ObjectContext

NorthwindCtxObjectSet<Product>ObjectSet<Category

>ObjectConte

xt

Page 36: Entity Framework

Demo 8Community Technical Preview 4

Page 37: Entity Framework

Out of Scope

Table Splitting Inheritance Complex types Entity SQL Transactions Concurrency SPs, Views and Functions

Page 38: Entity Framework

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

Page 39: Entity Framework

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

Page 40: Entity Framework

QuestionsJorge Fioranelli | b: blog.jorgef.net | e: [email protected]