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
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
CLR decimal money real sql_variant tinyint
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 don’t 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 Doesn’t mean it’s 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 application’s 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
• Lots of ORMs available for .NET Learn More @ http://www.learnnowonline.com Copyright © by Application Developers Training Company
Generic Data Objects vs. Entity Objects
• ADO.NET has long had generic data objects • Most common:
SqlConnection and OleDbConnection SqlDataAdapter and OleDbAdapter DataSet DataTable SqlDataReader and OleDbDataReader
• 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 it’s been the best we’ve 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 • Microsoft’s new core data access technology Big commitment from the company
• Initial release didn’t 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 • Microsoft’s 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 Isn’t appropriate for every kind of application Doesn’t 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
Application
Architecture Entity Data Model Conceptual Model
Mapping Storage Model
Entity SQL Query Entity SQL Query
LINQ to Entities Query
Results
Object Services Command Tree
Entity Data Reader
EntityClient Data Provider Command Tree
ADO.NET Data Providers
Data Store Learn More @ http://www.learnnowonline.com Copyright Š by Application Developers Training Company
DB Data Reader
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 • Doesn’t 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 Studio’s 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 • Don’t 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) Don’t 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