Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilBedřich Štěpánek
1
YOUR LOGO C# ADO.NET
2
YOUR LOGO Úvod – ADO.NET ADO.NET zajišťuje přístup k databázím 2 koncepčně jedinečné styly -Připojeně -Odpojeně přechodné (offline) spojení Database ADO.NET klient
3
YOUR LOGO ADO.NET - poskytovatelé ADO.NET podporuje mnoho poskytovatelů Poskytovatel definuje základní množinu tříd vycházející ze System.Data Poskytovatel je optimalizován pro komunikaci s konkrétním DBMS System.Data -Connection - připojuje se k uložišti dat -Command – reprezentuje dotaz SQL, název procedury -DataReader – přístup k datům, směr dopředu, jen ke čtení -DataAdapter – přenáší data mezi volajícím a datovým uložištěm -Interní objekty pro operace nad daty (select, insert, update, delete)
4
YOUR LOGO Získávání dat v připojeném režimu 1.Otevření spojení ( SqlConnection ) 2.Spuštění dotazu ( SqlCommand ) 3.Výsledek se načte do „čtečky“( SqlDataReader ) 4.Uzavření „čtečky“ 5.Uzavření spojení SqlConnection SqlCommand SqlDataReader Databáze SqlParameter SqlParameter SqlParameter
5
YOUR LOGO Získávání dat v odpojeném režimu Data jsou „kešována“ v DataSetu 1.Otevření spojení ( SqlConnection ) 2.Naplnění DataSetu (užitím SqlDataAdapteru ) 3.Uzavření spojení 4.Modifikace dat v DataSetu 5.Otevření spojení 6.Uložení změn do DB 7.Uzavření spojení SqlConnection SqlDataAdapter DataSet Database
6
YOUR LOGO Komponenty ADO.NET SQL Server.NET Data Provider OleDb.NET Data Provider Oracle.NET Data Provider ODBC.NET Data Provider DataReader DbCommand Připojený režim DataSet DataAdapter Odpojený režim … DataContext Table<T> LINQ-to-SQL ObjectContext EntityObject Entity Framework …
7
YOUR LOGO LINQ LINQ je jednotný programovací model pro libovolný druh dat LINQ umožňuje dotazovat se na data nezávisle na datovém zdroji LINQ pro objekty LINQ pro ADO.NET -LINQ pro SQL -LINQ pro entity LINQ pro SQL
8
YOUR LOGO LINQ Rozšíření LINQ -LINQ pro Sharepoint -LINQ pro CRM -LINQ pro exchange -LINQ pro … Příklad: var query = from c in Customers where c.country == „Italy“ select c.CompanyName;
9
YOUR LOGO LINQ – podpora jazyka Lokální odvozování typů -Určení správného typu proměnné je ponechán na kompilátoru, který jej odvodí z výrazu přiřazeného do samotné proměnné Příklady: var a = 5; // a je deklarováno jako int var x = 2.3; // x jako double var p = default(string); // p jako string var u = null; // nelze odvodit typ lokální proměnné z null
10
YOUR LOGO LINQ – jak pracuje Kód: Customer[] Customers = GetCustomers(); var query = from c in Customers where c.Country == “Italy” orderby c.Name select new { c.Name, c.City }; Kompilátor: var query = Customers.Where( c => c.Country == “Italy”).OrderBy( c => c.Name).Select( c => new { c.Name, c.City } );
11
YOUR LOGO LINQ – podpora jazyka Rozšiřující metody rozšiřuje existující typ přidáním nových metod bez odvozování do nového typu Rozšiřující metoda musí být statická a veřejná První parametr je typ, který metoda rozšiřuje První parametr obsahuje klíčové slovo this Generický typ jako první parametr rozšiřuje množinu tříd Rozšiřující metody lze přetěžovat
12
YOUR LOGO LINQ – podpora jazyka Rozšiřující metoda – příklad: static class ExtensionMethod { public static decimal Double(this decimal d) { return d + d; } public static decimal Triple(this decimal d) { return d * 3; }
13
YOUR LOGO LINQ – pokračování Rozšiřující metody jsou záklaním rysem syntaxe Vykonání příkazu v DB je odloženo až do prvního přístupu k výsledkům dotazu Deklarativnější styl jazyka se lépe čte i udržuje Snadno se dotazujete na objekty, entity, databázové záznamy, uzly XML, …
14
YOUR LOGO LINQ - dotazy Dotazy pracují nad objekty implemetující rozhraní IEnumerable nebo IQueryable Klazuzule from -Míří na instanci třídy implementující rozhraní IEnumerable -Definuje datový zdroj dotazu -Typ proměnné odvodí kompilátor z typu datového zdroje -Lze použít více klauzulí where a spojovat tak různé datové zdroje Klauzuke Where -Udává filtrovací podmínku, jenž se aplikuje na datový zdroj -Překládá na rozšiřující metodu Where rozhraní IEnumerable
15
YOUR LOGO LINQ - dotazy Klauzule Where -V jednom dotazu může být více klauzulí where public static IEnumerable Where (this IEnumerable source, Func predicate) Klauzule Select -Určuje co se má vybírat z výsledků všech předchozích klauzulí a výrazů
16
YOUR LOGO LINQ - dotazy Klauzule Group a Into -Seskupuje výsledky podle klíče var query = from d in Developers group d by d.language into developersGroup select new { Language = developersGroup.Key, DevelopersCount = DevelopersGroup.Count() }
17
YOUR LOGO LINQ - dotazy Klauzule OrderBy -Umožňuje vzestupně či sestupně třídit výsledky dotazu Klazule Join -Spojuje různé datové zdroje na základě členů zdrojů, u nichž lze zjišťovat rovnost -Srovnávání se provádí pomocí speciálního slova „equals“ -U equals záleží na pořadí operandů -Levý klíč představuje vnější sekvenci zdrojů, pravý vnitřní zdroj var result = from c in Categories join p in Products on c.IdCategory equals p.IdCategory …
18
YOUR LOGO LINQ – operátory Any -Vrací TRUE, jestliže ve zdrojové sekvenci existuje prvek, který vyhovuje zdanému predikátu -Metoda končí ihned, jakmile je dostupný výsledek bool result = (from c in Customers from o in c,Orders select o).any( o => o.IdProduct == 1)
19
YOUR LOGO LINQ – operátory All -Vrací TRUE, kdy podmínce vyhovují všechny elementy ve zdrojové sekvenci bool result = (from c in Customers from o in c.Orders select o).All(o => o.Quantitu > 0);
20
YOUR LOGO LINQ – operátory Take -Parametr count představuje počet položek, teré se vyberou ze zdrojové sekvence First -Vybírá první parametr ze sekvence FirstOrDefault -Podobné jako First, pokus neexistuje nevrátí chybu
21
YOUR LOGO ORM model ORM model přístupu k datům -Mapuje databázové tabulky na třídy a objekty -Objekty jsou automaticky ukládány do databáze -Operace mohou probíhat v připojeném a odpojeném režimu Výhody -Zvyšuje produktivitu práce, méně kódu -Pracujete s objekty a jejich vztahy namísto tabulek a SQL dotazů -Integrovaný mechanismus dotazování na objekty 21
22
YOUR LOGO ORM model Nevýhody -Méně flexibility – SQL příkazy jsou automaticky generovány -Výkonnostní problémy (někdy) Relační databáze ORM Entity (C# třídy) ORM Framewor k
23
YOUR LOGO ORM model ORM nástroje v.NET Framework a VS -LINQ to SQL -ADO.NET EntityFramework ORM nástroje třetích stran -Nhibernate -Telerik Open Acces ORM -MicroORM -Lightspeed
24
YOUR LOGO LINQ to SQL ORM framework pro SQL server Definujete množinu objektů jako abstraktní vrstvu nad relačními daty Dotazujete se pomocí LINQ Mapování mezi entitami a databázovou strukturou je popsáno v metadatech Třída DataContext obstarává komunikaci mezi LINQ a relačním datovým zdrojem
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.