1 / 28

LINQ a SQL Server 2008

LINQ a SQL Server 2008. Miroslav Kubov čík V ývojársky špecialista Microsoft Slovakia Blog: http://blog.aspnet.sk/mirkub/. Agenda. Language INtegrated Query Benefity použitia LINQ LINQ to SQL ADO.NET Entity Framework. LINQ – Pre čo?. LINQ – základné fakty.

nixie
Download Presentation

LINQ a SQL Server 2008

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LINQ a SQL Server 2008 Miroslav Kubovčík Vývojársky špecialista Microsoft Slovakia Blog: http://blog.aspnet.sk/mirkub/

  2. Agenda • Language INtegrated Query • Benefity použitia LINQ • LINQ to SQL • ADO.NET Entity Framework

  3. LINQ – Prečo?

  4. LINQ – základné fakty

  5. Kód na prístup k dátam - dnes class DataAccess{ static void GetNewOrders(DateTime date, int qty) { using (SqlConnection con = new SqlConnection(Settings.Default.NWDB)) { con.Open(); SqlCommandcmd = con.CreateCommand(); cmd.CommandText = @" SELECT o.OrderDate, o.OrderID, SUM(d.Quantity) as Total FROM Orders AS o LEFT JOIN [Order Details] AS d ON o.OrderID = d.OrderID WHERE o.OrderDate >= @date GROUP BY o.OrderID HAVING Total >= 1000"; cmd.Parameters.AddWithValue("@date", date); DbDataReader r = cmd.ExecuteReader(); while (r.Read()) { Console.WriteLine("{0:d}:\t{1}:\t{2}", r["OrderDate"], r["OrderID"], r["Total"]); } } } } Syntax „query“je špecifická pre zdroj a musí byť zabudovaná do aplik.kódu Dátové hodnoty sú v dátových štruktúrach

  6. Kód na prístup k dátam - LINQ class DataAccess { static void GetNewOrders(DateTime date, int qty) { using (NorthWindDBnw = new NorthWindDB ()) { varorders = from o in nw.Orders where o.OrderDate > date select new { o.orderID, o.OrderDate, Total = o.OrderLines.Sum(l => l.Quantity); foreach(SalesOrder o in orders) { Console.WriteLine("{0:d}\t{1}\t{2}", o.OrderDate, o.OrderId, o.Total); } } } } Syntax „query“ je natívny aplikačný kód Dátové objekty sú plnohodnotnými typmi objektov

  7. <book> <title/> <author/> <year/> <price/> </book> Relačné dáta Objekty XML Portfólio LINQ C# 3.0 VB 9.0 Ďalšie… .NET Language Integrated Query LINQ toObjects LINQ toDataSets LINQ toSQL LINQ toEntities LINQ toXML

  8. Agenda • Language INtegrated Query • Benefity použitia LINQ • LINQ to SQL • ADO.NET Entity Framework

  9. Zjednodušenie kódu varzakaznici= from c in db.Zakaznici where c.Mesto== „Bratislava" select c;

  10. Výrazy v LINQ konštrukciach

  11. Zvýšenie produktivity

  12. Flexibilita <xml> … </xml>

  13. Agenda • Language INtegrated Query • Benefity použitia LINQ • LINQ to SQL • ADO.NET Entity Framework

  14. LINQ to SQL • LINQ to SQL obsahuje • Implementáciu LINQ „query“jazyka voči SQL Serveru • Mapovací systém - mapujedatabázu na objektový model • Visual Studio 2008 Object Relational Designer • Menu „Add / New Item / LINQ to SQL classes“ • Generuje DBML súbor • Môžete začať z databázy alebo z objektového modelu

  15. LINQ to SQL • Objektové konštrukcie mapované na relačné konštrukcie

  16. Aktualizácia dát • Postup aktualizácie: • „query“ na objekty • Aktualizácia na klientskej/aplikačnej vrstve • Volanie DataContext.SubmitChanges • Zmeny si automaticky sleduje model • Aktualizácie/Zmeny môžu kaskádovať • Metóda SubmitChangesmôže byť transakčná (použitímSystem.Transactions)

  17. LINQ to SQL a ulož. procedúry • LINQ to SQL modelypodporujú ulož. procedúry • Ako kolekciu metód • Podpora uložených procedúr s viac resultset-mi • Podpora ulož.procedúr na aktualizácie • Poskytuje metódy prekrývajúce Insert[trieda], Update[trieda] a Delete[trieda] • Implementácie metód volajú ulož.procedúry priamo this.ExecuteCommand("exec my_insert_procedure"); (C#) Me.ExecuteCommand("exec my_insert_procedure") (VB)

  18. Generovanie SQL príkazov • LINQ to SQL generuje parametrizované SQL • Zabudovaná ochrana proti SQL injection • Generovaný SQL príkaz sa dá odsledovať • Projekcie a „joiny“ generujú anonymné typy • Alebo definujú triedu pre každú projekciu/join • Visual Studio 2008 ORM dizajnér podporuje SQL Sever 2008 • Vyžaduje VS2008 SP1

  19. Agenda • Language INtegrated Query • Benefity použitia LINQ • LINQ to SQL • ADO.NET Entity Framework

  20. ADO.NET Entity Framework • Poskytuje vrstvu abstrakcie voči databázam nazvanú Entity Data Model (EDM) • Vývoj voči konceptuálnym entitám reprezentujúcim dáta • Entity sú mapované na databázovúschému • Mapovanie je explicitné a dá sa meniť • Výhody: • Abstrakcia úložiska dát • Minimalizácia vplyvu zmien medzi aplikáciou a dátovým úložiskom Entity Framework je sadatechnológií, ktoré zjednodušujú vývoj dátovo flexibilných aplikácií.

  21. Entity Framework LINQ to Entities Object Services • Entity Data Model (EDM) • Konceptuálny a logický model • Entity Client • Triedy typu ADO.NET Provider • Entity SQL • Rozšírenie SQL jazyka pre entity • Object Services • Objektový model entít • LINQ to Entities • LINQ syntax pre Object Services a Entity SQL Entity SQL Entity Client Entity Data Model Konceptuálny Mapovanie Logický

  22. EDM a vrstva mapovania • Mapovanie prepája konceptuálny model a schému úložiska • Model mapovania je implementovaný schémami • Konceptuálna schéma (CSDL) • Schéma úložiska (SSDL) • Mapovacia schéma (MSL) • Schémy mapovania je možné generovať nástrojmi • EDMGen.exe – volanie z príkazového riadka • Entity Designer – grafický nástroj v VS 2008 SP1 • Generovanie použitímtriedyEntityClassGenerator • System.Data.Entity.Design • System.Data.Metadata.Edm

  23. EDM mapovanie a databázy • Model mapovania • Tabuľky a pohľady na EntitySet • „Foreign Key“ reštrikcie na AssociationSet • Uložené procedúry naImportFunction • Užívateľsky definované funkcie typu „Table-Value“ na ImportFunction • Klientské pohľady („Client Views“) • Definované ako časť modelu mapovania • Podobné databázovým pohľadom

  24. „Query“ pre Entity Data Model • LINQ to Entities • Typy a kontrola syntaxe pri kompilácii • Podpora IntelliSense • Entity SQL • Pridáva EDM sémantiku do SQL jazyka • Užitočný pre tvorbu dynamických požiadaviek • Umožňuje volať uložené funkcie • LINQ aj Entity SQL sú prekladané do SQL dialektu databázového servera • Optimalizácia pre daný databázový server

  25. Použitie LINQ to Entities Northwindnw = new Northwind(); // vybranie celej entity var query = from c in nw.Customers select c; foreach (varcs in query) Console.WriteLine("{0} {1}", cs.Customerid, cs.CustomerName); // jednoduchá projekcia var query2 = from c in nw.Customers select new { CID=c.CustomerID, CName=c.CompanyName }; foreach (varcs in query2) Console.WriteLine("{0} {1}", cs.CID, cs.CName);

  26. Kedy LINQ to SQL a kedy ADO.NET EF? • LINQ to SQL • Rýchly vývoj silne typovej dátovej vrstvy • 1:1 mapovanie objektov na databázu • Databáza SQL 2000/2005/2008 • ADO.NET Entity Framework • Robustné dlhodobo udržovateľné riešenia • Flexibilné a komplexné mapovacie scenáre • 1:n, komplexné typy, vzťahy • Kompozícia a dedičnosť entít • Nepriama väzba na databázu cez model • Podpora väčšiny bežne používaných databáz

  27. Zdroje • Definovanie Entity Data Modelu • http://www.code-magazine.com/Article.aspx?quickid=0712022 • Mapovanie Entity Data Modelu na relačnú databázu • http://www.code-magazine.com/article.aspx?quickid=0712032 • Programovanie voči ADO.NET Entity Framework • http://www.code-magazine.com/Article.aspx?quickid=0712042 • Blog ADO.NET tímu • http://blogs.msdn.com/adonet • The LINQ Project Website • http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx

  28. Zhrnutie

More Related