Vous êtes sur la page 1sur 37

Introducing the Entity Framework

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Objectives
Learn about how object-relational mapping works to provide data access Understand what the Entity Framework is and how it can provide robust data access services to applications See how to build a database-first Entity Data Model using Visual Studio Explore the various Entity Framework APIs and tools
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Agenda
Object-Relational Mapping (ORM) and Data Access The Entity Framework and Data Model Building a Simple Application using Entity Framework Entity Framework APIs and Tools

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Object-Relational Mapping (ORM) and Data Access

Just about all applications make use of data Microsoft has a long history of providing data access technologies But they have problems
Too close to the metal Use generic data objects

Data access code is usually a lot of code Differences between objects and database Entity Framework bridges the gap Terminology: data store and database
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Object/Relational Differences
Inherent problems application has to overcome
Needs lots of code somewhere Big impact on application design, effort, and performance

Will discuss in the context of a relational database

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Data Type Differences


Many kinds of data types SQL Server 2008 R2 data types:
bigint date float nchar rowversion table varbinary binary datetime hierarchyid ntext smalldatetime text varchar bit datetime2 image numeric smallint time uniqueidentifier char datetimeoffset int nvarchar smallmoney timestamp CLR decimal money real sql_variant tinyint

Some have direct equivalents in .NET Database types often have constraints Binary data in the database can be anything Dates and times are another issue
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Relationship Difference
Databases use foreign key constraints .NET objects use object references SalesOrderHeader and SalesOrderDetail tables

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Relationship Difference
Many-to-Many relationships In AdventureWorks, customers and addresses

Not the default objects

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Inheritance Difference
.NET supports object inheritance
No support for multiple inheritance

Inheritance makes code simpler, maintainable, easier to debug


Model hierarchies of objects

Relational databases dont support inheritance Some ways to accomplish it


Table per type Table per concrete type Table per hierarchy

Have to manage special constraints


Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Identity/Equality Difference
How do you tell two things are the same? Database: identity of a row is the primary key
Enforced by a primary key constraint Can use either natural or surrogate keys

Objects in object-oriented application


Two objects with the same data are not equal Two variables, each with reference to different objects, are not equal Two variables with reference to same object are equal Can make a custom definition
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Handling the Differences


Can be an lot of work to handle object/relational differences
But at least they are well understood Doesnt mean its easy

Write the code yourself, or use a framework

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Object-Relational Mapping (ORM)


Programming technique for conversion of incompatible types Most ORM tools rely on metadata about database and objects Clean separation of concerns Key feature is mapping
Expresses how an object is related to a table ORM uses to manage conversion process

ORM manages applications interactions with database


Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Benefits to using an ORM


Productivity Better application design Code reuse Application maintainability Potential downside: performance
More complex code Means slower performance But ORM code is likely to be well tuned Data access time may be minimal
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Lots of ORMs available for .NET

Generic Data Objects vs. Entity Objects


SqlConnection and OleDbConnection SqlDataAdapter and OleDbAdapter DataSet DataTable SqlDataReader and OleDbDataReader

ADO.NET has long had generic data objects Most common:

Provide a means for accessing data in database


DataSet and DataTable contain rows and columns

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Generic Data Objects


Problems with Generic Data Objects
Strong coupling between application and database Loose typing Object interactions

Problems persist despite long use


Every application has to deal with them But its been the best weve had, other than custom objects

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Entity Data Objects


Big improvement over what came before
Instead of using a generic DataSet, use Customer, Order, and OrderDetail Navigation properties to access related data Fit into object-oriented application

Object interfaces can mirror tables and fields


Or be completely different Or something in between

Need a way to map objects to database


Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Benefits of Entity Data Objects


Strong typing Compile-time checking Persistence ignorance Productivity

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Data Programming Against a Model


Will have to change how you think about data in an application
No longer interacting directly with the database Instead working with objects Very different paradigms

The model is not the database! Generic data objects require lots of code Entity data objects mean querying a schema that reflects business model ORM eliminates context shift in code
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Agenda
Object-Relational Mapping (ORM) and Data Access The Entity Framework and Data Model Building a Simple Application using Entity Framework Entity Framework APIs and Tools

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

The Entity Framework and Data Model


Complete ORM for .NET applications Microsofts new core data access technology
Big commitment from the company

Initial release didnt gain much traction Version 4.1 is a mature product
Substantial commitment and innovation

Do we need a new data access technology?


Older technologies have run their course Modern applications have to focus on domain model

Version numbers
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Entity Data Model


Integral part of Entity Framework Client-side model different from database schema Describes structure of entity data objects Take the database schema and reshape it into objects Defined by three chunks of XML in a single .edmx file
Conceptual model Storage model Mapping

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

LINQ to SQL
Similar to Entity Framework
Both use LINQ to query a database using a data model

Developed independently at Microsoft


LINQ to SQL grew out of LINQ team Entity Framework grew out of Data Programmability team

Soon Microsoft had two new data access technologies LINQ to SQL moved, and lost out to Entity Framework
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Why Use Entity Framework?


Part of the .NET Framework and integrated into Visual Studio Uses LINQ as the primary query language Independent of the data source Microsofts primary data access strategy

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

When Should You Not Use Entity Framework or an ORM?


Entity Framework is not a panacea
Not an instant data access panacea Isnt appropriate for every kind of application Doesnt do bulk inserts

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Agenda
Object-Relational Mapping (ORM) and Data Access The Entity Framework and Data Model Building a Simple Application using Entity Framework Entity Framework APIs and Tools

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Building a Simple Application using Entity Framework


Compelling reason to use Entity Framework is its integration with Visual Studio Sample is based on AdventureWorksLT
Ten tables with data about customers, products, and orders Complex enough to exercise Entity Framework

Will build sample as a class library


Easy to reuse in multiple applications Not absolutely necessary

Mostly create simple console applications


Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Using the Entity Objects


Time to use the entity data objects in an application Simple console application Need to do three things to use the class library
Add a reference to the class library Add a reference to System.Data.Entity Add the Entity Framework connection string

And, of course, write some code!

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Agenda
Object-Relational Mapping (ORM) and Data Access The Entity Framework and Data Model Building a Simple Application using Entity Framework Entity Framework APIs and Tools

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Entity Framework APIs and Tools


Entity Framework is a complex set of APIs and design tools Need a basic understanding of what each of the Entity Framework components do
Road to deep understanding

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Architecture
Entity Data Model

Application
Entity SQL Query
Entity SQL Query

LINQ to Entities Query

Results

Conceptual Model
Mapping Storage Model

Object Services
Command Tree
Entity Data Reader

EntityClient Data Provider


Command Tree DB Data Reader

ADO.NET Data Providers

Data Store
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Entity Data Model Designer


Part of Visual Studio Lets you work with model graphically rather than as raw XML First saw as part of the AdventureWorksLibrary project Doesnt support all Entity Data Model features Lets you map tables, views, stored procedures and functions to entities
Can update the model from the underlying database
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Design Methodologies Using the Designer


Two broad ways to build a data application
Top-down design Bottom-up design

Neither is necessarily better than the other Entity Framework supports both Provides three ways to build an application
Database-first design Model-first design Code-first design
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Code Generation Using T4


Entity Data Model designer generates code Uses Visual Studios Text Template Transformation Toolkit (T4)
Generates classes in designer code file Standard within Visual Studio

Can customize the templates


Not for the faint of heart

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Object Services
Manages all of the objects in Entity Framework Key task is to handle differences between database and objects Provides and EntityObject class and manages objects that inherit from it Four primary tasks
Exposes an API Performs query transformations Performs object materialization Tracks state of objects and updates data store
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Entity Client
Communicates with the database and manages data conversions
Must know structure of database as well as entity data objects Uses the full Entity Data Model

Connects to database through data provider


Standard API Same providers as in ADO.NET, updated for Entity Framework

Can work with any data store with a provider SQL Server versions Dont have to use Object Services to query
Can use Entity SQL directly to Entity Client
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Entity Framework Services


Entity Framework provides various services to the application
Microsoft expands with each new release Expands usability of Entity Framework

Support for Plain Old CLR Objects (POCO)


Dont inherit from EntityObject Supports lots of programming styles and methodologies ObjectContext obtains relationship and change tracking information

Data Binding in .NET Applications


Long a standard technique for connecting data to UI controls Entity Framework fully supports data binding
Learn More @ http://www.learnnowonline.com
Copyright by Application Developers Training Company

Learn More!
This is an excerpt from a larger course. Visit www.learnnowonline.com for the full details!

Learn More @ http://www.learnnowonline.com


Copyright by Application Developers Training Company

Vous aimerez peut-être aussi