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

Entity Framework 4 In Microsoft Visual Studio 2010

on

  • 19,645 views

Session delivered 15th Feb 2010 using RC of VS2010

Session delivered 15th Feb 2010 using RC of VS2010

Statistics

Views

Total Views
19,645
Views on SlideShare
19,260
Embed Views
385

Actions

Likes
13
Downloads
0
Comments
2

6 Embeds 385

http://geekswithblogs.net 206
http://www.slideshare.net 121
http://blogs.msdn.com 32
http://www.techgig.com 23
http://translate.googleusercontent.com 2
https://suffolku.blackboard.com 1

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

12 of 2 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • http://www.mediafire.com/download/bibo8k8wqt5ckwe
    Are you sure you want to
    Your message goes here
    Processing…
  • Love this presentation!
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Look at the problems that EF addresses: - opaque database commands buried in strings - tedious, repetitive code to materialise objectsCreate connectionSQL String – embedded joinsDataReader – not type safe
  • Type safe codeNo 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
  • 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 GenIn V1 we had EntityClassGenerator which could be configured using eventsHard (it used CodeDom)Inflexible (not much control)In V2 we will haveTemplatedEntityClassGenerator and will ship default T4 templatesCustomization via ToolsUses Workflow FoundationComplex typesPluralizationPublic abstract PluralizationServiceDefault implementation is English OnlyDefault rules:EntityTypes / ComplexTypes are singularizedEntitySets are pluralizedNavigation Properties based on cardinalityStored ProceduresStored Procedures as functionsMapping support for stored procedure resultComplex type as return typeScalar and void return typeEntity CUD using Stored ProceduresNo need to have SPs for all CUD
  • Foreign KeysIndependent 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 LoadingCan do lazy loadContext.deferredloading=true Model Level using ESQL<Function Name=“CustomerFullName” ReturnType=“String”><Parameter Name=“customer” Type=“MyModel.customer”> <DefiningExpression>customer.FirstName + ‘ ‘ + customer.LastName </DefiningExpression> </Function>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;
  • 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…
  • N-Tier – exposing EF classes via WCF.Lots of feedback around the difficulties with detaching/reattaching object from contextNew 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
  • Code OnlyNo XML files, no model!Convention to configE.g. Convention: xxxID to a primary key, schema=dboE.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<MyThing> 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.

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
    eric.nelson@microsoft.com
    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
    Entity Data Model
    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”
    Objects in
    Applications
    Conceptual
    Mapping
    Storage
    Rows in
    Tables
  • Model First and Templated Code Generation
    demo
  • 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
    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-Only 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 Only*
    Note:
    * Delivered in .NET Framework 4 and 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
    demo
  • 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
    demo
  • http://blogs.msdn.com/adonet/archive/2009/08/05/improvements-to-the-generated-sql-in-net-4-0-beta1.aspx
  • Feature Pack
    Separate download
    Contents
    T4 Template for Persistence Ignorance/POCO
    T4 Template for self-tracking entities (Now part of VS2010 RC)
    Code-only support
    When VS2010 is RTM, Feature Pack will be high quality.
  • Persistence Ignorance/POCO
    First class support for Persistence Ignorance
    No modifications to your classes!
  • Persistence Ignorance
    demo
  • N-Tier (Self Tracking Entities)
    Service
    publicclassNorthwindService : INorthwindService
    {
    publicCustomerGetCustomer(string id)
    {
    using (varctx = newNorthwindEntities())
    {
    returnctx.Customers.Include("Orders")
    .Where(c => c.CustomerID == id)
    .SingleOrDefault();
    }
    }
    publicboolSubmitOrder(OrdernewOrder)
    {
    using (varctx = newNorthwindEntities())
    {
    ctx.Orders.ApplyChanges(newOrder);
    ValidateOrderGraph(ctx, newOrder);
    returnctx.SaveChanges() > 0;
    }
    }
    }
    Client
    staticboolValidSTEUpdate(INorthwindService svc)
    {
    var customer = svc.GetCustomer("ALFKI");
    // modify contact name of customer
    customer.ContactName += "+";
    // add a new order
    varnewOrder = newOrder();
    newOrder.Order_Details.Add(newOrder_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
  • N-Tier
    demo
  • 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 Only
  • Code Only
    demo
  • 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
    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/
  • Required Slide
    © 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.