Presentation laddar. Vänta.

Presentation laddar. Vänta.

LINQ i alla dess smaker Johan Lindfors blogs.msdn.com/johanl Patrik Löwendahl

Liknande presentationer


En presentation över ämnet: "LINQ i alla dess smaker Johan Lindfors blogs.msdn.com/johanl Patrik Löwendahl"— Presentationens avskrift:

1 LINQ i alla dess smaker Johan Lindfors blogs.msdn.com/johanl Johan.Lindfors@microsoft.com Patrik Löwendahl www.lovendahl.net Patrik.Lowendahl@cornerstone.se

2 Agenda  Vad är utmaningen – Otypade och typade dataset, TableAdapter – Utmaningar och alternativ  Microsofts ansats – LINQ to Objects LINQ to SQL – LINQ to Entity Framework  Lite utanför ”området”... – LINQ to XML – ”Astoria”

3 Bakgrund och utmaningar

4

5 DataSetDataTable DataReaderRepositories Domain Model Objekts modell Data Transfer Object Message Object Active Record XML

6 !!

7 ADO.NET ADO.NET

8 DataTable DataSet

9

10 EmployeesOrdersCustomersProductsCategories Products SqlDataAdapterOleDbDataAdapter SQL Server 2005 CustomersOrders SQL Server 6.5 DataSet Web service XmlDataDocument XML Fil

11 För- och nackdelar +- Snabbt att komma igångBegränsad ”change tracking” Enhetlig datamodellIngen ”Lazy Loading” Bra interface mot databasenBidrar till att skapa procedurella lösningar Grundläggande CRUDFå utökningspunkter Enhetlig syn på data med databasen Hård koppling mellan applikation och databasstruktur

12 Domänmodeller Domänmodeller

13 Fokus på applikation inte lagring Frikopplar affärslogik från datastrukturen Större möjligheter till återanvändning och utökningar

14

15 Tjänster Lazy LoadingLaddar data ”on demand” Avancerad change trackingSpårar förändringar på fältnivå Inverse managementAutomatisk hantering av hiearkiska relationer Uniquing (Identity Map)Säkerställer att bara en kopia av varje entitet finns i minnet. CachingInbyggd L1/L2/L3 cache Unit Of WorkSchemalägger förändringar i den ordning de gjorts.

16

17 För- och nackdelar +- Många möjligheter till utökningar Få bra ramverk Modell med fokus på applikationens lösningsområde Dåligt verktygsstöd idag Rik funktionalitet tillsammans med O/R mappare Finns ingen O/R - standard Frikopplar affärslogik från databasstrukturen

18 LINQ

19 LINQ-projektet C# 3.0C# 3.0 Visual Basic 9.0Visual Basic 9.0 Andra…Andra….NET Language Integrated Query LINQ to Objects LINQ to DataSets LINQ to SQL LINQ to Entities LINQ to XML Objekt XML Relationer

20 var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone }; var contacts = customers.Where(c => c.State == "WA").Select(c => new { c.Name, c.Phone }); “Extension methods” “Lambda expressions” “Query expressions” “Object initializers” “Anonymous types” “Local variable type inference” Nyheter i C# 3.0

21 LINQ to SQL

22 Direkt mappning mot SQL RAD Mål: Microsoft SQL Server ”Deferred Execution” Designmål RTM: Visual Studio 2008

23

24

25

26 Anpassning av affärslogiken Partiella klasser och metoder Optimering Lagrade procedurer Kompilerade frågor

27 “LINQ to SQL” Funktioner  Anpassning – Affärslogiken – Partiella-klasser för genererade objekt – Lägg till metoder, medlemmar som inte ska lagras osv… – Partiella metoder används för affärslogik – Uppdateringslogik – Implementera partiella-metoder i deriverad klass – Anropa lagrade procedurer eller egen logik  Optimering – Val vid “laddning” – “Gå igenom” relaterad information – ObjectTrackingEnabled – DeferredLoadingEnabled – Kompilerad fråga – Spara resurser vid generering av SQL från LINQ uttryck

28 LINQ to Entity Framework

29 Mappning Att ställa frågor Stored procedures Updatera data Koncept vi skall beröra Arkitektur

30 Mappning

31 Källa: www.endintiers.com

32 Datastorage OO Classes Datastore Objects Schema Datastore Objects Schema Entity Data Model Schema Entity Data Model Schema Conceptual ModelStorage/Logical Model *.CSDL *.MSL *.SSDL Map

33

34 Att ställa frågor

35 ObjectQuery Database ObjectContext EntityConnection EntityCommand EntityDataReader EntityConnection EntityCommand EntityDataReader

36 Database Normalised Application Objects Normalised Application Objects LINQ to Entities Queries LINQ to Entities Queries ‘Optimised’ Dynamic SQL ‘Optimised’ Dynamic SQL Views Stored Procs & TVFs Stored Procs & TVFs EF Entity SQL Queries Entity SQL Queries

37 Lazy Load Källa: www.martinfowler.com

38 Load spans

39 Identity map Källa: www.martinfowler.com

40 Uppdatera data

41 ObjectContext UnitOfWork Delete Insert Update

42

43 Stored procedures

44 Function mapping <Function Name="TenMostExpensiveProducts" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="false” ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" /> SSDL: <FunctionImport Name="TenMostExpensiveProducts" EntitySet="Products" ReturnType="Collection(NorthwindEFModel.Products)" /> CSDL: MDL: var query = context.TenMostExpensiveProducts(); Context:

45 Insert / Update / Delete SSDL: MDL:

46 Arkitektur

47 Entity Client – EDM, Entity SQL Entity Framework Runtime Data Providers (ADO.NET patterns) SQL Server Relational DBMS Web Service Domain Modeling Tools Modeling Mapping Browsing Binding Programming Layers … Code Gen Mapping Query and Update Pipelines Transactions Metadata Services Objects Linq Objects Linq XML XLinq XQuery XML XLinq XQuery Applications SqlClient OtherClient Non- relational

48 Läs mer… http://msdn.microsoft.com/data http://blogs.msdn.com/adonet http://blogs.msdn.com/angelsb http://forum.cornerstone.se http://forums.msdn.com http://www.lowendahl.net

49 LINQ to DataSet

50 ”Disconnected cache” Otypade Typade var query = from row in myDataSet.Tables["Customers"].AsEnumerable() where row.Field ("City") == "London" select new { row.Field ("CustomerID"), row.Field ("ContactName") } ; var query = from customer in northwind.Customers where customer.City == "London" select customer;

51 “LINQ to DataSet” Typade och otypade  “Otypade” DataSet – Anropa AsEnumerable() på DataTable – Referera till fält via namn – Använd Field (kolumn-namn) – Projicera ut fält för starkt typade resultat  “Typade” DataSet var query = from row in myDataSet.Tables["Customers"].AsEnumerable() where row.Field ("City") == "London" select new { row.Field ("CustomerID"), row.Field ("ContactName") } ; var query = from customer in northwind.Customers where customer.City == "London" select customer;

52 LINQ to XML

53 ”Astoria”

54 REST: GET, POST, PUT, DELETE XML, JSON, RDF.../northwind.svc/Customers[ALFKI]?$expand=Orders AJAX och Silverlight http://astoria.mslivelabs.com

55


Ladda ner ppt "LINQ i alla dess smaker Johan Lindfors blogs.msdn.com/johanl Patrik Löwendahl"

Liknande presentationer


Google-annonser