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

Slides:



Advertisements
Liknande presentationer
SOA Governance with SOA Software For BUGS Martin Svensson.
Advertisements

Dag KönigMathias Olausson MicrosoftCallista / QWise.
Master Data Management (MDM) for the enterprise using BizTalk 2006 R2
TFS – Maximera nyttan, mer än bara versionshantering
Page 1 GADD Software en introduktion Publik version, September 2013, gaddsoftware.com.
Nyinstallerad Webinfo •I Central parameters skapa parametern Statlogger och ge value 1 Logga endast vissa sidor genom att skapa parametern i PageId.
The Innovative Integration Suite
Förslag med resultat från HistoryKonfigurera flera olika Search Providers Snabbt lägga till Search Provider Visuell sök med bilder i resultatet.
1 JAVATJÄNSTER I MOLNET. 2 •Johan Hammar •Github: •Magnus Edevåg
Sommarkollo PLEASE READ (hidden slide) This template uses Microsoft’s corporate font, Segoe Segoe is not a standard font included with Windows,
ASP.NET MVC MVC historik ● Traditionellt arkitekturmönster som ansetts särskilt lämpligt i webbapplikationer ● Separation of concerns & loose.
En "djyp" dykning I SharePoint's sök tjänst
”Ett sätt att distribuera Business Objects via webben”
All the small things Massor av små tips och tricks för BizTalk-utvecklaren Mikael Sand
Modern Data Protection
Live Communication Server 2005 with SP1 Martin Lidholm
Get more efficient use of IFS Application with
Qwise software engineering – refactored! Kvalitetssäkra ditt projekt med kontinuerlig integration Mathias Olausson
Från metadata till uppmärkning av komplexa dokument: Ett ramverk för semantisk dokumentproduktion Henrik Eriksson Magnus Bång Linköpings universitet.
MSDN Update Live Services Platform & CardSpace Robert Folkesson DPE Microsoft Sergio Molero ConcreteIT.
Välkommen till Sommarkollo Windows Communication Foundation André Henriksson, Johan Lindfors.
Compfab BUSINESS AT YOUR FINGERTIPS med Information Organizer MdH Erik Gyllenswärd Mladen Kap.
Backup strategies “in-a-nutshell” by System Center Robert Hedblom MVP System Center Cloud and Datacenter Management MEET member TechNet Moderator Consultant.
Andreas Carlsson Barvefjord och Carlsson Datakraft AB Svarkråkev Värnamo Tel: Epost: Databasteknik 2.
Programmering II C#, ID1304.
Databasanslutning TDS- Tabular Data Stream (SQL) OLE DB- Data som kan representeras som rad och kolumn ODBC- Open Data Base Connectivity (Data Source Name.
Microsoft Office SharePoint Server 2007 – del 1 Pontus Haglund Mid Market Solutions Specialist Microsoft AB.
Microsofts Produkter Mikael Nyström Senior Executive Consultant - TrueSec MVP Windows Server – Setup/Deployment
Unified Communications. Unified Communications and Collaboration Simplify Working Together Pervasive capabilities for where and how people work.
Name Title Microsoft Sweden. Avtalspraktiska fördelar Om-installation med valfritt media Kräver inte samma fysiska media som maskinen kom med Men…
Pontus Blomkvist, Banverket ICT 5 Jonny Andersson – Technical Specialist Microsoft
Guide för SA Benefits Calculator
Att integrera databaser med Java
Designmönster J2EE Praktiska tips Webbservertillämpningsprogrammering Vladimir Bogodist.
Creating an Adobe Presentation Rapidly create Flash-based presentations and eLearning courses from PowerPoint Set Preferences Add or Edit Audio Add multimedia.
Databaser i B2KUNO Johan Eklund. Hur går jag vidare? Avancerade tillämpningar:  Analysera data  Generera information Utveckla följande färdigheter:
Java Nätverks API URL sockets.
i olika programmeringsspråk
Create a stunning dashboard and keep your job Patrik Sundqvist.
1 Windows Azure Mikael ÖstbergTorkel Ödegaard. 2.
SQLServer 2008 För utvecklare
Self Service in the Enterprise Patrik Sundqvist.
ASP.NET MVC4 + NoSQL = Major Awesomness. IoC Container.
Microsoft Dynamics AX (fd Axapta)
Copyright © 2006, SAS Institute Inc. All rights reserved. SAS®9 Plattformen en del av Tele2 Common Plattformen Ylva Andersson, Infotrek Frida Säfström,
ASP.NET 2.0 Providermodellen André Henriksson UtvecklarevangelistMicrosoft.
Microsoft Azure Web Sites IRL Robert Folkesson, Active Solution
Telia Business Innovation AB/khn Den Visionära Organsiationen vs. Den Förvaltande Organisationen...
Systemutveckling i molnet - IRL Chris KlugRobert Folkesson.
OSD LIT/ZTI – Bending the rules Johan Arwidmark och Mikael Nyström.
A Beginner's Guide to SharePoint 2013 REST API [Rest/Odata/Json]
ASP.NET 2.0 André Henriksson Developer Evangelist Microsoft AB.
Flexicon – Din systempartner
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord “Det verkar alltid omöjligt tills dess att det är gjort” Nelson Mandela.
Välkommen till Sommarkollo Windows Presentation Foundation och Expression Blend Robert FolkessonJohan Lindfors
Microsoft Dynamics AX (fd Axapta)
Microsoft Visual Studio och.NET Framework, idag och imorgon! Robert Folkesson
Kontextuell ärendehantering
Välkomna Per Ahlberg Johan Lindfors. Hur kan vi bli bättre...  Era utvärderingar är viktiga!  Betygsätt innehåll, talare, relevans  Kommentera gärna.
1 Windows Azure Mikael ÖstbergTorkel Ödegaard. 2 Äshur Ashore Azzuure.
Rikare webb med AJAX, Microsoft Silverlight, WPF och Expression Studio Robert Folkesson
KONSTEN ATT SKRIVA BRA ÅTERANVÄNDBAR KOD Pierre Setteskog, Pontus Munck
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ” Oavsett om du tror att du kan, eller om du tror att du inte kan, har du helt rätt. ” -
ISV Community Day Till sist Per Ahlberg Developer Evangelist Developer & Platform Evangelism Microsoft Sweden.
Välkommen till Sommarkollo Expression Studio, verktyg för designers Juli 2007 Robert Folkesson Developer Evangelist Microsoft Johan Lindfors.
DA7351 Programmering 1 Databas SQL Föreläsning 24.
 Object-Relational mapping  (aka O/RM, ORM, and O/R mapping)  Mappning av objekt och dess relationer till/från en relationsdatabas.
Rubriklayout Underrubrik.
Process Map for Current Dog Licensing
Presentationens avskrift:

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

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”

Bakgrund och utmaningar

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

!!

ADO.NET ADO.NET

DataTable DataSet

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

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

Domänmodeller Domänmodeller

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

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.

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

LINQ

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

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

LINQ to SQL

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

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

“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

LINQ to Entity Framework

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

Mappning

Källa:

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

Att ställa frågor

ObjectQuery Database ObjectContext EntityConnection EntityCommand EntityDataReader EntityConnection EntityCommand EntityDataReader

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

Lazy Load Källa:

Load spans

Identity map Källa:

Uppdatera data

ObjectContext UnitOfWork Delete Insert Update

Stored procedures

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:

Insert / Update / Delete SSDL: MDL:

Arkitektur

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

Läs mer…

LINQ to DataSet

”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;

“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;

LINQ to XML

”Astoria”

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