Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avSandra Danielsson
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
5
DataSetDataTable DataReaderRepositories Domain Model Objekts modell Data Transfer Object Message Object Active Record XML
6
!!
7
ADO.NET ADO.NET
8
DataTable DataSet
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
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.
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
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
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
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.