Professional Documents
Culture Documents
Framework & Your Data Access Layer: Wade Wegner Architect Evangelist Microsoft Corporation
Framework & Your Data Access Layer: Wade Wegner Architect Evangelist Microsoft Corporation
NET Entity
Framework & Your Data
Access Layer
Wade Wegner
Architect Evangelist
Microsoft Corporation
wade.wegner@microsoft.com
http://www.architectingwith.net/
http://www.twitter.com/wadewegner
Agenda
What is the ADO.NET Entity
Framework
How do you structure your DAL?
EF == DAL
Full Encapsulation
Partial Encapsulation
Its a tool
CRUD
Query model
Mapping
Entity Framework
What does it do?
Persistence
Querying
Manages transactions
Manages concurrency
Its a tool
CRUD
Query model
Mapping
var apartments =
from a in db.Apartments
where a.State == IL
select a;
Business Logic
Data Access Logic
Data Sources
Separation of Concerns
High Cohesion
Loose Coupling
Forms
UI Presentation
Business
Objects
Business
Data Access
CS
MSL
MSL
SS
ADO.NET
Entity
Client
ADO.NET
Object
Services
Entities
Cons
Pre-.NET 4.0, Object First is not well support
scenario
Pre-.NET 4.0, Entities are not very pure (not POCO)
Cant easily switch ORM
Data validation support is limited.
Encapsulate
Why Encapsulate?
Separation of Concerns
Testability
Embed additional logic
Performance/Control
Control ObjectContext Lifetime
Control SQL Generation
Eager Loading
Encapsulation Approaches
Full Encapsulation
EF Entities are merely a DTO used in your
data access layer.
ObjectContext is a Data Access Component
Partial Encapsulation
Expose Queryable Objects
Encapsulate ObjectContext
Hybrid
Mix & match as appropriate
Cons
No change tracking or identity management
Additional Object Materialization
No query composition: secondary LINQ queries are
just enumerating.
Option 3: Partial
Encapsulation
Three techniques
IEnumerable
IQueryable
ObjectQuery
Pros
Full benefits of CDM
Query composition
Simplified queries (Navigation vs. joins)
Some independence from ORM
Object Identity & Change Tracking
Cons
Use of EF Entities has implications on Business Layer.
What are all my SQL Queries? Hard to answer.
Architectural Concerns
Persistent Ignorance (e.g. POCO)
Application Patterns (Repository and UnitOfWork patterns)
N-Tier applications
Improvements
Customization of code generation
Pluralization and singularization, lazy loading, SPs
Customizing queries
SQL generation readability & query improvements
More information
ADO.NET team blog:
http://blogs.msdn.com/adonet/defaul
t.aspx
MSDN:
http://msdn.microsoft.com/en-us/lib
rary/bb399572.aspx
10-4:
http://channel9.msdn.com/shows/104/