Petr Puš SW Architekt Unicorn a.s. Microsoft C# MVP.

Slides:



Advertisements
Podobné prezentace
Modelování moderních aplikací v SELECT Enterprise
Advertisements

Přístup k databázím z WWW
Tomáš Petříček Microsoft C# MVP
Obecné praktiky práce s DB
CXPath Dotazování nad heterogenními XML zdroji s pomocí konceptuálního schéma Jan Vávra, 21. dubna 2004
Ing. Jan Mittner MySQL Workbench 2. Základy práce s databází 3. Subversion 2.
Zpracování SQL Lubomír Andrle 5. přednáška
FG Forrest, a.s. Jan Novotný iBatis SqlMaps.
Přednáška č. 1 Úvod, Historie zpracování dat, Základní pojmy
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Microsoft Office Access
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Ing. Jan Mittner Rozšíření modelu 2. Vazba 1:n 3. Vazba m:n 2.
Modelování procesů pomocí workflow
Fakulta elektrotechniky a informatiky
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Úvod do databází Databáze.
Databáze Jiří Kalousek.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
C# - Databáze úvod, ADO.NET
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Vývoj aplikací pro SharePoint
Rozšíření jednouživatelské verze IS na víceuživatelskou Prezentace Diplomové práce Autor : Libor Tomášek Spoluautoři : Pobucký M., Drábek L. Vedoucí :
Relační databáze.
Konceptuální návrh databáze
Vypracoval: Ondřej Dvorský Třída: VIII.A
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
Informatika pro ekonomy II přednáška 10
Unifikovaná architektura databáze Katsiaryna Chernik.
Dalibor Kačmář Developer & Platform Evangelist Group
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Aplikační a programové vybavení
Copyright (C) 2000 Vema, a. s.1 V3 klient Michal Máčel Provozní integrace G2, HR/Win a internetu.
ADO – práce s databázemi
Konceptuální návrh databáze
Databázové modelování
ADO.NET – Objekt DataSet (offline scenář) Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Databázové systémy Informatika pro ekonomy, př. 18.
123.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
XML data na disku jako databáze Kamil Toman
ADO.NET – object Connection Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Microsoft SQL server Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Delphi a databáze MS SQL Server.
Kam se ubírá jazyk C#? Dr. Ing. Dalibor Kačmář Academic Developer Evangelist Developer & Platform Evangelist Group Microsoft Czech & Slovakia Anders Hejlsberg.
Databázové aplikace v Delphi
23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ-
Databázové systémy Úvod, Základní pojmy. Úvod S rozvojem lidského poznání roste prudce množství informací. Jsou kladeny vysoké požadavky na ukládání,
Perzistence XML dat Kamil Toman
David Gešvindr MCT | MSP | MCITP | MCPD. Jak se zpracovává dotaz? Když norma nestačila Práce s XML Geografická data CTE Zpracování hierarchií a grafů.
Objektově relační mapování - ORM. Obsah Co je to ORM Využití ORM Dědičnost –jednoduchý příklad –metody jak dědičnost popsat pomocí relační databáze Vztahy.
YOUR LOGO C# ADO.NET. 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)
YOUR LOGO C# Entity Framework. YOUR LOGO  Entity framework nám poskytuje: -Vytváří objektový model na základě databázového schématu -Mapuje tabulky,
Databáze ● úložiště dat s definovaným přístupem ● typy struktury – strom, sekvence, tabulka ● sestává z uspořádaných záznamů ● databáze – struktura – záznam.
.NET framework platforma Jiří Pokorný
Databázové systémy Roman Danel Institut ekonomiky a systémů řízení 2016.
Unix a Internet 9. SQL server
Výpočetní technika Akademický rok 2008/2009 Letní semestr
Technologie ADO.NET Technologie ADO.NET
Informatika pro ekonomy přednáška 8
Optimalizace SQL dotazů
C# přehled vlastností.
Přednáška 9 Triggery.
Databázové systémy a SQL
Transkript prezentace:

Petr Puš SW Architekt Unicorn a.s. Microsoft C# MVP

O-R Mapování a.NET Představení ADO.NET EF Vlastnosti a možnosti Práce s referencovanými entitami Mapování dědičnosti Výkon Srovnání s ostatními technologiemi

Relační databáze Tabulky, relace,.. Aplikační vrstva Objekty, asociace, dědičnost, … Možnost pracovat s relačními daty jako s objekty Tabulky => Třídy Řádky => Instance tříd Sloupce => Vlastnosti instancí tříd Relace => Asociace mezi třídami Možné simulovat dědičnost

Produktivita Není potřeba starat se o persistenci dat Je možné soustředit se pouze na aplikační logiku Udržovatelnost Je potřeba méně řádek zdrojového kódu Entity mapují obchodní problematiku Menší náchylnost na změny – refactoring Nezávislost na konkrétním RDBMS Odstínění od specifických SQL příkazů

Dlouhou dobu podpora pouze relačního přístupu Připojené ADO.NET DataSety Data access app. block v Enterprise library Nutné použít komponentu třetí strany nHibernate iBatis

LINQ to SQL od.NET FW 3.5 První oficiální jednoduchý O-R mapper Podpora LINQ Vhodné spíše pro menší aplikace Mapování přímo ve zdrojovém kódu (atributy) Omezení designeru ve VS 2008 Podpora pouze pro MS SQL …

Plnohodnotný O-R mapper pro.NET FW Více možností než LINQ to SQL Součást.NET FW 3.5 SP1 Pohodlný designer pro EF – VS 2008 SP1 Zjednodušení implementace práce s daty

Mapování definováno v XML souborech Aplikační kód pracuje pouze z vrstvou entit Podpora jakéhokoli RDBMS Postaveno na konceptu ADO.NET providerů Provider musí podporovat EF Podpora LINQ Pokročilé techniky mapování Podpora uložených procedur ve formě typových wrapperů

Mapování je vyjádřeno 3 XML soubory CSDL Popis konceptuálního modelu SSDL Popis úložiště (DB) MSL Popis mapování mezi úložištěm a konceptuálním modelem

Ve VS 2008 práce pouze se soubory *.edmx Použití vizuálního designéru Při kompilaci vytvoření CSDL, SSDL, MSL souborů Možnosti uložení mapovacích souborů Embedded resource Přímo v aplikační složce

Tvorba modelu entit ve VS 2008 SP1

ADO.NET entity provider Speciální ADO.NET provider Entity client Typy EntityConnection, EntityCommand,… Použití Entity SQL (eSQL) Netypový přístup k entitám Přístup pouze pro čtení Velice rychlý přístup k datům

ObjectContext a eSQL Použití typu ObjectContext Použití Entity SQL (eSQL) Typový přístup k entitám (ObjectResult ) LINQ to Entities Použití typu ObjectContext Použití LINQ nad konceptuálním modelem Typové datové dotazy Typový přístup k entitám Velice efektivní

Entita složená z dat více tabulek Komplexní vlastnosti Použití uložených procedur na aktualizaci dat Asociace N M.. N Dědičnost

Dotazovací jazyk na bázi SQL rozšířený o podporu entit Rozšíření : VALUE, REF, DEREF, OFTYPE, … Překládán do nativního SQL databáze použitím služeb ADO.NET provideru Možné tvořit polymorfické dotazy Podpora řádků i entit Vhodný pro tvorbu dynamických dotazů SELECT VALUE p FROM DBEntities.Product AS p

Namespace System.Data.EntityClient Pro čtení dat EntityDataReader Implementace čtení se liší na základě eSQL dotazu (řádek, entita, reference, …) EntityConnection connection = new EntityConnection("name=EntityFrameworkDBEntities"); string eSql = "SELECT VALUE p FROM EntityFrameworkDBEntities.Product as p"; connection.Open(); EntityCommand command = connection.CreateCommand(); command.CommandText = eSql; EntityDataReader reader = command.ExecuteReader(CommandBehavior.SequentialAccess); while (reader.Read()) { Console.WriteLine(reader["name"]); } connection.Close(); EntityConnection connection = new EntityConnection("name=EntityFrameworkDBEntities"); string eSql = "SELECT VALUE p FROM EntityFrameworkDBEntities.Product as p"; connection.Open(); EntityCommand command = connection.CreateCommand(); command.CommandText = eSql; EntityDataReader reader = command.ExecuteReader(CommandBehavior.SequentialAccess); while (reader.Read()) { Console.WriteLine(reader["name"]); } connection.Close();

Implementace přístupu k datům pomocí Entity client

Zpřístupňuje data formou silně typových CLR tříd Řeší problémy konkurenčního přístupu Podpora pro datové vázání na visuální prvky Třída ObjectContext Možné použít Entity SQL nebo LINQ using (SampleDBEntities context = new SampleDBEntities()) { var query = context.CreateQuery ("SELECT VALUE p from Person as p"); var result = query.Execute(MergeOption.AppendOnly); foreach (Person per in result) { Console.WriteLine("{0} - {1}", per.Name, per.GetType().Name); } using (SampleDBEntities context = new SampleDBEntities()) { var query = context.CreateQuery ("SELECT VALUE p from Person as p"); var result = query.Execute(MergeOption.AppendOnly); foreach (Person per in result) { Console.WriteLine("{0} - {1}", per.Name, per.GetType().Name); }

Implementace přístupu k datům pomocí Object services

Implementace LINQ pro ADO.NET EF Umožňuje tvorbu datových dotazů v.NET jazyce Typová kontrola Intellisense Možné použít volání.NET metod using (SampleDBEntities context = new SampleDBEntities()) { var query = from prod in context.Product where prod.Name.ToUpper() == "HOUSKA" select prod; foreach (ProductEntity product in query) { Console.WriteLine("{0} ({1})", product.Name, product.Category.Name); } using (SampleDBEntities context = new SampleDBEntities()) { var query = from prod in context.Product where prod.Name.ToUpper() == "HOUSKA" select prod; foreach (ProductEntity product in query) { Console.WriteLine("{0} ({1})", product.Name, product.Category.Name); }

Implementace přístupu k datům pomocí LINQ to Entities

EF nepodporuje lazy-loading Na získání referencovaných entit je potřeba myslet v kódu (!) Explicit loading Zavolání metody Load na objektu reference Eager loading Uvedení v dotazu, které ref. entity se mají nahrát Metoda Include

Explicit loading Eager loading if (!product.CategoryReference.IsLoaded) { product.CategoryReference.Load(); } if (!product.CategoryReference.IsLoaded) { product.CategoryReference.Load(); } var query = from prod in context.Product.Include("Category") select prod; var query = from prod in context.Product.Include("Category") select prod;

Práce s referencovanými entitami

Simulace OOP dědičnosti nad relačními daty Podpora polymorfických dotazů Hloubka dědičnosti není omezena Lze vyjádřit pomocí vizuálního designéru Možný výběr strategie uložení Table-per-Type Table-per-Hierarchy A a1 B b1 C c1

Table-per-Hierarchy Jedna tabulka pro hierarchii tříd Použivá se sloupec „discriminator“ Rozpoznání, jaký typ entity je v řádku uložen Velice rychlé dotazy Sloupce pro atributy specializovaných tříd nejsou vždy využity A * id a1 b1 c1

Table per subclass Každá třída – vlastní tabulka obsahující pouze sloupce pro speciální atributy třídy Jeden záznam má stejné ID ve všech tabulkách hierarchie Vhodné i pro větší stromy dědičnosti A * id B C a1 b1c1

Implementace dědičnosti

Test s provedením 100 dotazů SqlClient Entity SQL LINQ to Entities

ADO.NET EF + Mapování v XML Nezávislost na DB Bohatší možnosti mapování Dědičnost Asociace M:N Více tabulek do entity LINQ to SQL + Jednodušší na použití Podpora lazy-loading pro asociované entity Podpora lazy-loading pro jednotlivé vlastnosti entity

ADO.NET EF + Podpora LINQ Integrovaný designer ve VS 2008 SP1 Jednodušší vývoj Oficiální MS technologie Typové volání uložených procedur nHibernate + Větší konfigurovatelnost Třídy entity v separátních souborech (assembly) Podpora lazy-loading Typová nezávislost tříd entit Logování nativního SQL Lepší podpora mapování dědičnosti …

LINQ to SQL (.NET FW 3.5) Jednoduchý typový wrapper na DB Vhodný pro jednoduché aplikace nad MS SQL Velice rychlý vývoj ADO.NET ENTITY FW (.NET FW 3.5 SP 1) Použitelný O-R mapper Vhodný pro „středně velké“ aplikace Efektivní vývoj (Designer, LINQ to Entities) nHibernate (.NET FW 1.1 +) O-R mapper s nejvíce možnostmi Vhodný pro enterprise aplikace Těžkopádnější vývoj

O-R Mapování a.NET Představení ADO.NET EF Vlastnosti a možnosti Práce s referencovanými entitami Mapování dědičnosti Výkon Srovnání s ostatními technologiemi