+ All Categories
Home > Documents > Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na...

Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na...

Date post: 29-Feb-2020
Category:
Upload: others
View: 6 times
Download: 0 times
Share this document with a friend
11
Přístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný objektový relační maper, umožňuje měnit mapování na fyzický model bez změny konceptuálního modelu Ado.net – součást NET zprostředkovávající přístup k datům pomocí XML Práce s daty LINQ – podpora dotazování přímo do NET pomocí vybraného programovacího jazyka Podpora objektově orientovaného programování (Entyty Framework) – implicitně nezávislý objektový přístup k databázím Ado.NET Je součástí frameworku sprostředkovávající přístup k datům pomocí XML Umožňuje připojení k libovolnému databázovému systému Architektura Důležité je rozdělení mezi databází a XML
Transcript
Page 1: Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný

Přístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný objektový relační maper, umožňuje měnit

mapování na fyzický model bez změny konceptuálního modelu Ado.net – součást NET zprostředkovávající přístup k datům pomocí XML Práce s daty LINQ – podpora dotazování přímo do NET pomocí vybraného

programovacího jazyka Podpora objektově orientovaného programování (Entyty Framework) – implicitně

nezávislý objektový přístup k databázím

Ado.NET Je součástí frameworku sprostředkovávající přístup k datům pomocí XML Umožňuje připojení k libovolnému databázovému systému

Architektura Důležité je rozdělení mezi databází a XML

Základní třídy Neobsahuje obecné objekty určení k manipulaci se všemi druhy databází, ale

poskytovatele dat navrhnuté konkrétně pro různé druhy zdrojů dat SQL server, OLBD, Oracle, ODBC

Connection – zprostředkovává spoje se zdrojem dat Command – vykonává SQL příkazy a uložené proceůry DataReader – poskytuje rychlý přístup k datům získaným z dotazu DataAdapter – plní sadu dat (DataSet) a promítá změny do zdroje dat

Page 2: Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný

Třídy pro správu dat Třídy představují objekty, jedná se o strukturovaný přístup k datům Dataset – reprezentace sady dat zahrnující v sobě tabulky, vztahy mezi daty a

oznámení i v offline režimu DataTable – data jsou umístěna v řádcích a každá položka přísluší určitému sloupci DataColumn – objekt definuje sloupce a jeho datový typ DataRow – obsahuje data jednoho řádku datové tabulky DataRealtion – umožňuje vytvořit vztah, mezi dvěma nebo více objekty typu

DataTable pomocí jejich dvou sloupců DataColumnMaping a DataTableMaping – umožňují mapovat sloupcům tabulky nová

jména pro jednodušší použití v databázových aplikacích

Třídy pro připojení k databázím Lze vytvářet vlastní pomocí rozhraní systémdataigb

Třídy pro SQL

SqlConnectiom Připojení k databázi Parametry připojení:

o Server – název databázového serveruo Uid – jméno uživateleo Pwd – heslo uživateleo Database – název databáze

SqlCommand Spuštění dotazu na datovém zdroji Typ dotazu

o Text – používá se pro textové zadání SQL dotazuo TableDirect – používá se ro data tabulkyo StroredProcedure – používá se pro volání uložených procedur

Page 3: Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný

SqlDataAdapter Spojuje data v paměti (DataSet) s daty v databázovém systému

SqlCommandBuilder Vytváří kolekci SQL dotazů pro aktualizaci, přidání a mazání dat

SqlTransaction Umožňuje spusti t více příkazů na jednou, které mají být provedeny jako jediná

nedělitelná transakce

Sdílení dat Přenášení dat mezi vstvami je jednoduší, než přenášení odpojeného adorecord setu Pro přenesení adorecord setu z jedné komponenty na druhou se musí použít

commerselink Pro přenesení ado.net datasetu jednoduše přenést XML soubor

Typy objektů data adaptérů Objekt SqlDataAdapter – je prostředníkem v komunikaci mezi tabulkou datasetu a

tabulkou nebo pohledem SQL server databázi Objekt OleDbDataAdapter – je prostředníkem v komunikaci mezi tabulkou datasetu a

tabulkou pohledem v libovolném datovém zdroji, který je přístupný před OLE DB poskytovatele

Objekt ODBCDataAdapter – objekt je prostředníkem v komunikaci pomocí ODBC Objekt OracleDataAdapter – je prostředníkem komunikace tabulkou datasetu

tabulkou nebo pohledem v Oracle databázi

Odpojený přístup k databázím Umožňuje odpojený přístup k datům z databáze, ale běžně se užívá v připojeném

režimu Ado komunikuje s databází prostřednictvím volání služeb OLEDB poskytovatele Ado.net komunikuje prostřednictvím objektu dataedjector, který interně volá OLEDB

poskytovatele, někdy používá přímé rozhraní IP adres poskytované systémem řízení databáze

Linq Podpora dotazování přímo do dot.net programovacího jazyku Nová palety klíčových slov pro provádění dotazů nad daty Odhalení chyb již v době kompilace

Page 4: Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný

Implementace Podporo od verze 3.5 net Framework LINQ to Objects – implementace LINQ pro standartní kolekce nacházející se

v paměti LINQ to SQL – implementace LINQ pro SQL server 2000 a vyšší LINQ to XML – implementace LINQ pro práci s XML daty LINQ to DataSet – implementace LINQ pro práci s Ado.NET datasety

Výhody Umožňuje psát dotazy včetně aktualizačních na různé datové zdroje jednotným

způsobem Snadno lze převádět data do/z objektů Jednotná syntaxe pro práci s různými druhy dat Silně typový kód Lze jednoduše kombinovat data z různých zdrojů Zjednodušení práce Vysoký výkon Bezpečný přístup k datům z SQL serverů Je deklarativní

Syntaxe V C se začíná klauzulí from Data vybíráme z dataContext.JmenoTabulky

Page 5: Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný

V klauzuli where se provádí kontrola na jméno sloupečku, pokud dojde k chybě, není možné program přeložit

Zápis dotazů pomocí lambda funkcí Lambda funkce je anonymní funkce Umožňuje ušetřit řádky kódu deklarace a není třeba pro ni vymýšlet název Po jménu tabulky postupně voláme metody (proto metoda(paramtry)) jako Where() a

Select() Parametry metod jsou zadávány pomocí lambda funkce

o Před špičkou (zapsanou pomocí rovnítka a větší než) je argument nebo seznam argumentů v závorkách, za špičkou je výraz který je speciální pro každou metodu (pro where je to výběrová podmínka; pro Select je to co má vrátit (seznam sloupečků))

Každý zápis pomocí normálního způsobu lze převést na lambda zápis, ale opačně to není vždy úplně možné

Lambda operátory:

Entity Framework Přináší možnost pracovat s vlastními třídami Vytváří objektový model nad strukturovanou databází Vychází z ado.net Je nezávislý na SQL databázovém serveru Je vhodný pro složitější vícevrstvé aplikace

Architektura Při užívání Entit pracujeme s komfortní virtuální databází Místo tabule jsou kolekce objektů (entityset) místo řádků objekty (entity), místo

sloupců vlastnosti objektů, místo relace asociativní vztahy mezi objekty, a obsauje dědičnost

Page 6: Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný

Přínosy Podpora Linq konstrukcí Modifikace dat Pozdní vyhodnocení dotazu – minimalizuje množství dat získávaných z databáze Object identity – každá entita se v rámci kontextu natáhne jen jednou (mohou být dva

objekty pro tutéž entitu) Předkompilace dotazů pro rychlejší provádění Detekce konfliktů – při ukládání se kontroluje, zda nedošlo ke změnám ve sloupci Transakce – uzavření kódu do bloku using Kontrola načítání entit – při navigaci mezi entitami se entity natahují pouze na

vyžádání, pro potřebu přednatažení použít Include() v dotazu

Implementace Jsou k dispozici všechny řídící prvky, kam se zadávají dotazy na objekty Při zadávání dotazu do databáze se vytvoří virtuální vyhodnocovací plán dotazů proti

konceptuálnímu modelu, ten se přeloží do plánu, který se má vykonat proti schématu uložiště

Poskytovatel databáze pak převede plán do konkrétního SQL jazyka konkrétní databáze

Konceptuální schéma (CSDL) – určuje objektový model, kód ví jen o tomto modelu o dalších dvou nikoliv, definuje objekty, jejich vlastnosti, dědičnost atd.

Schéma uložiště (SSDL) – popisuje uložiště dat (databázi), obsahuje popisy tabulek, jejich sloupců, datových typů, uložených procedur, typů parametrů, relací v databázi atd.

Page 7: Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný

Mapovací soubor (MSL) – mapuje objekty v CSDL na objekty v SSDL

Objektový model Příkazy entit se píší ručně Výsledky se dostaví netypové, nutné přetypovat na své typy Hodí se pro předem neznámí typ fragmentů Tradiční přístup z relačního světa lez uplatnit proti objektové databázi entit, ale s výše

uvedenými překážkami eSQL dotazy proti kontextu entit s pomocí CreateQuery<T> - tímto způsobem se

vrací typový výsledek, se kterým je možné dále pracovat LINQ dotazy proti kontextu – zpřístupňuje jednotlivé entity sety jako typové kolekce

– nejlepší způsob práce s plnou kontrolou syntaxe

Možnosti modelování Ne vše, co lez nastavit v modelovacích souborech je podporováno ve vizuálním

desingeru Komplexní (strukturované vlastnosti) – lze nadefinovat např.: typ Adresa (ulice,

město, PSČ), a pak lze užívat kontrakce typu: Jana.AdresaPrace.Ulice Entitu lze mapovat na více tabulek – v dabinzích bývá běžné volání pole vyjímkou do

extra tabulky, při tom je možné mít entitu a kód neví o rozdělení Více entity setů pro jenu entitu – lze např.: mít definovanou entitu Firma, která se

nachází ve dvou tabulkách – dodavatele a odebiratele Aktualizace dat pomocí uložených procedur – místo autogenerovancýh CRUD lze

užít uložené procedury Volání uložené procedury pomocí typů wrapperů – mohou vracet buď skalární údaje,

nebo entity

Schema uložení dat Data leze ukládat dle některé z předefinovaných možností

Table per hierarchy (TPH) Všechny třídy mající společného předka jsou v jedné tabulce se sloupečky pro

všechny vlastnosti všech typů Jeden sloupeček určuje konkrétní typ Je to jednoduché a rychlé Vede k řídkým tabulkám => problém s kontrolou validace na tabulkové vrstvě

Table per type (TPT) Každý typ má svojí tabulku, která se liší sloupci navíc od typu, ze kterého se dědí Jednoduché a rychlé Neefektivní pro dotazy, vracejí více konkrétních typů

XML Je otevřený a jazykově nezávislý Stěžejní pro přenos dat v ado.net

Uložení databáze do souboru XML Umožňuje uložit data i schéma datasetu Lze omezit používání značek na předem definované Užívá tagy a je založen na tvorbě vlastních tagů

Page 8: Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný

Parser XML XPath XPath je jazyk užívaný pro identifikaci uzlů v XML dokumentu Hlavním rysem XPath je vyjádření relativní cesty od jednoho uzlu k druhému nebo či

atributu XPath připomíná dotazovací jazyk SQL

Základní funkce XPath

Základní třídy XPath pro hledání výrazů

Page 9: Přístup k datům .NET50f86467ae432... · Web viewPřístup k datům .NET Linq je závyslí na platformě SQL a užívá výhradně mapování 1:1 Ntyty Framework je plnohodnotný

Přehled výrazů XPath

XSLT procesor Jazyk XSLT slouží k transformaci XML na jinou formu (pdf, html…) K transformaci XML dokumentu se musí utvořit XSLT styl, který říká, jak se mají

jednotlivé značky dokumentu transformovat na výstupní značky XSLT obsahuje kromě deklarace kořenový element Základní transformace XSL tvoří šablony Uvnitř šablon leze vyhodnocovat podmínku if Uvnitř šablon lez integrovat příkaz for-each


Recommended