• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Entity Framework 4 In Microsoft Visual Studio 2010
 

Entity Framework 4 In Microsoft Visual Studio 2010

on

  • 5,570 views

slides from March 2010 www.devweek.com

slides from March 2010 www.devweek.com

Statistics

Views

Total Views
5,570
Views on SlideShare
5,323
Embed Views
247

Actions

Likes
1
Downloads
182
Comments
0

8 Embeds 247

http://geekswithblogs.net 165
http://blogs.msdn.com 46
http://www.slideshare.net 25
http://feeds2.feedburner.com 4
http://www.developerit.com 3
http://translate.googleusercontent.com 2
http://www.hanrss.com 1
https://blogs.msdn.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Tech·Ed  North America 2009 03/21/10 16:39 © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  • Look at the problems that EF addresses: - opaque database commands buried in strings - tedious, repetitive code to materialise objects Create connection SQL String – embedded joins DataReader – not type safe
  • Type safe code No joins as we’ve abstracted away the database representation. (If we had joins then the compiler could verify them) Familiar query syntax (L2O, L2Xml, ...) Working with objects
  • 03/21/10 16:39 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  • Some of the features of EF v1... Abstract the db model. Get a richer object/entity model to work with in the application. Isolate from change. Work with objects not tables. Have object relationships. Type-safe queries. Easy to query across relationships (just access properties on the objects!). Compile-time checking. Pretty good start, some rough areas. Mention vote of no confidence
  • Yep, apparently “4” is the number after “1” in marketing ;-) Aligning version numbers with .NET 4, C#4. Don’t be alarmed if you see a reference to EF4!
  • Code Gen In V1 we had EntityClassGenerator which could be configured using events Hard (it used CodeDom) Inflexible (not much control) In V2 we will have TemplatedEntityClassGenerator and will ship default T4 templates Customization via Tools Uses Workflow Foundation Complex types Pluralization Public abstract PluralizationService Default implementation is English Only Default rules: EntityTypes / ComplexTypes are singularized EntitySets are pluralized Navigation Properties based on cardinality Stored Procedures Stored Procedures as functions Mapping support for stored procedure result Complex type as return type Scalar and void return type Entity CUD using Stored Procedures No need to have SPs for all CUD
  • 03/21/10 16:39 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  • Foreign Keys Independent Association – v1   Product p = new Product { ID = 1,       Name = "Bovril",       Category = context.Categories                         .Single(c => c.Name == "Food") }; context.SaveChanges(); FK Association – v2 Product p = new Product     {         ID = 1,         Name = "Bovril",         CategoryID = 13     };      context.Products.AddObject(p);     context.SaveChanges(); Deferred Loading Can do lazy load Context.deferredloading=true Model Level using ESQL customer.FirstName + ‘ ‘ + customer.LastName Enables from c in ctx.Customers select c.FullName() CLR Level [EdmFunction("MyModel", "CustomerFullName")] public static string FullName(this customer c) { return String.Format("{0} {1}", c.FirstName, c.LastName); } Enables Console.WriteLine(c.FullName()); Inline Functions in ESQL   using Northwind; function AmountPurchased(c Customer) as Sum (c.Sales.Amt) function AmountReturned(c Customer) as Sum (c.Returns.Amt) function AmountConsumed(c Customer) as                                                                       AmountPurchased(c) – AmountReturned(c) select AmountConsumed(c) from Customers as c;
  • 03/21/10 16:39 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  • Before going continuing, should mention the Feature Pack. Not all of the features I’m covering here will be in EF4 RTM, some (as mentioned in slide) will form the Feature Pack…
  • 03/21/10 16:39 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  • Code Only No XML files, no model! Convention to config E.g. Convention: xxxID to a primary key, schema=dbo E.g. Config: On map to schema sys and class property to table column [TableMapping(Schema=“sys”,TableName=“MyDBTable”] [ColumnMapping(PropertyName=“MyClassProp1”, ColumnName=“table_column1”)] [Key(PropertyName=“MyClassProp1”)] public objectset MyThings...
  • Db First (v1 approach) Model first. Start from scratch in designer. Generate code and database from model. Database generation is driven via a workflow that you can replace (haven’t looked at this yet!) Code first (feature pack). You create your classes in code and add some code to tell EF about the classes and their relationships. EF essentially creates a model internally and creates the database for you.
  • 03/21/10 16:39 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
  • N-Tier – exposing EF classes via WCF. Lots of feedback around the difficulties with detaching/reattaching object from context New API to makes this easier ( context.ObjectStateManager.ChangeRelationshipState ). Self-tracking Entities T4 template to make this even easier. Click through the example. Refer to great sample app by Danny Simmons for MSDN Magazine. N.B. Self tracking entity functionality requires type sharing between service and client
  • 03/21/10 16:39 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Entity Framework 4 In Microsoft Visual Studio 2010 Entity Framework 4 In Microsoft Visual Studio 2010 Presentation Transcript

  • ADO.NET Entity Framework in Microsoft Visual Studio 2010 and Microsoft .NET Framework 4 Eric Nelson [email_address] http://geekswithblogs.net/iupdateable http://twitter.com/ericnel Developer Evangelist Microsoft UK Advert Alert http://ukazure.ning.com
  • Agenda
    • Swift intro to Entity Framework
    • Entity Framework 4.0 Drill Down
      • Lots of demos
  • Why an ORM? Why Entity Framework?
  • Why an ORM? Why Entity Framework?
  • ADO.NET Entity Framework Recap
    • Tools and services to create an Entity Data Model (EDM)
      • Conceptual to Mapping to Storage
    • Tools and services for consuming an Entity Data Model
      • LINQ to Entities, Object Services and Entity SQL
    • Together they address the “impedance mismatch”
    Rows in Tables Objects in Applications Conceptual Mapping Storage Entity Data Model
  • Model First and Templated Code Generation
  • Entity Framework 1.0 Features
    • Generate model from database schema
      • Very rich mapping layer
      • Inheritance, rename, aggregate, filter
    • Simplified CRUD operations
    • LINQ querying*
    • Worked with many databases
    • Database agnostic query language
    • SP support for data retrieval/modification*
    • Designer*
    • Strategic!
  • Entity Framework 1.0 - Too many pain points
    • The designer!
    • Model First not supported
    • Poor support for Stored Procedures
    • No Pluralization/Singularization
    • Foreign Keys hidden
    • Lazy Loading not supported
    • Missing LINQ Operators vs LINQ to SQL
    • Generated SQL unreadable
    • No support for Plain Old CLR Objects
    • N-Tier difficult
  • Entity Framework 4.0
  • New in ADO.NET Entity Framework 4.0
    • Model-first development
    • Automatic pluralization
    • Foreign keys in models
    • POCO class support (Add-in)
    • Lazy loading
    • T4 Code Generation
    • Template customization
    • IObjectSet
    • Virtual SaveChanges
    • ObjectStateManager control
    • Self-tracking entities
    • SQL generation improvements
    • More LINQ operator support
    • LINQ extensibility
    • ExecuteStoreQuery
    • ExecuteStoreCommand
    • SPROC import improvements
    • Model defined functions
    • WPF designer integration
    • Code-First development (Feature CTP)
  • Entity Framework 4.0 - Removing the friction
    • Better Tools and Design Experience
    • More powerful/flexible runtime
    • And
      • Persistence Ignorance*
      • N-Tier
      • Code First*
    • Note:
      • * Delivered in a separate download
  • Better Tools and Design Experience
    • Model First
    • Templated code generation
    • Stored Procedures
    • Pluralization/Singularization
    • Complex Types
    • Better delete and search
  • Model First and Templated Code Generation
  • More powerful/flexible runtime
    • Lazy loading
    • Foreign Keys surfaced
    • More complete LINQ implementation
    • ExecuteStoreQuery
    • EntityFunctions and SqlFunctions
    • Improvements to generated SQL
  • Deferred Loading, Generated SQL
  • http://blogs.msdn.com/adonet/archive/2009/08/05/improvements-to-the-generated-sql-in-net-4-0-beta1.aspx
  • Feature Pack / Add-Ins
    • Separate downloads
    • Feature Pack
      • Code First support
    • Add-In
      • T4 Template for Persistence Ignorance/POCO
  • Persistence Ignorance/POCO
    • First class support for Persistence Ignorance
    • No modifications to your classes!
  • N-Tier
  • Code First (was Code Only)
    • Create the database from the classes
      • No model
      • Convention to config
  • Database First / Model First / CodeOnly
    • Database First (EF v1)
    • Model First
    • Code First
  • Code Only
  • N-Tier (Self Tracking Entities)
    • Service
    • public class NorthwindService : INorthwindService
    • {
    • public Customer GetCustomer( string id)
    • {
    • using ( var ctx = new NorthwindEntities ())
    • {
    • return ctx.Customers.Include( "Orders" )
    • .Where(c => c.CustomerID == id)
    • .SingleOrDefault();
    • }
    • }
    • public bool SubmitOrder( Order newOrder)
    • {
    • using ( var ctx = new NorthwindEntities ())
    • {
    • ctx.Orders.ApplyChanges(newOrder);
    • ValidateOrderGraph(ctx, newOrder);
    • return ctx.SaveChanges() > 0 ;
    • }
    • }
    • }
    • Client
    • static bool ValidSTEUpdate( INorthwindService svc)
    • {
    • var customer = svc.GetCustomer( "ALFKI" );
    • // modify contact name of customer
    • customer.ContactName += "+" ;
    • // add a new order
    • var newOrder = new Order ();
    • newOrder.Order_Details.Add( new Order_Detail ()
    • {
    • ProductID = products.Where(p => p.ProductName == "Chai" ).Single().ProductID,
    • Quantity = 1
    • });
    • customer.Orders.Add(newOrder);
    • return svc.SubmitOrder(newOrder);
    • }
    Danny Simmons MSDN Article: Building N-Tier Apps with EF4 http://code.msdn.microsoft.com/mag200911EF4 http://msdn.microsoft.com/en-gb/magazine/ee335715.aspx
  • Entity Framework
    • The designer!
    • No support for Plain Old CLR Objects
    • No Pluralization/Singularization
    • Foreign Keys hidden
    • Model First not supported
    • Lazy Loading not supported
    • Missing LINQ Operators vs LINQ to SQL
    • Generated SQL unreadable
    • N-Tier difficult
    • Poor support for Stored Procedures
  • Summary
    • Entity Framework 4.0 is rather nice!
    • We continue to listen and improve
    • Resources
      • http://bit.ly/ericnelson
      • Entity Framework 4.0 Resources http://bit.ly/ef4resources
      • Entity Framework Team Blog
      • http://blogs.msdn.com/adonet/
      • Entity Framework Design Blog http://blogs.msdn.com/efdesign/
  • © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. Required Slide