Venované tým, ktorí píšu otázky do kódu stránky...
Pozdravujem všetkých!
O Habrém je niekoľko informácií, že ďalšia verzia VisualStudio 2008 bude mať ADO.NET EntityFramework. (Poviem vám tajomstvo, táto verzia sa už objavila.) Tento vývoj je univerzálny rámec, ktorý vám umožňuje vytvoriť dátovú logiku pre váš projekt niekoľkými kliknutiami myšou.
Pri práci s dátovou logikou som sa zatiaľ stretol s 2 typmi projektov. Prvé boli vytvorené na notoricky známom frameworku NHibernate, ďalšie implementovali programátori. Už 3 roky píšem a vyvíjam rôzne systémy a celý ten čas som rozvíjal logiku práce výhradne s týmito kľučkami.
A tak, druhý deň, keď som si nainštaloval nový Windows, stiahol som si VisualStudio WebDeveloper Express a bol som šťastný, že som v balíku našiel ADO.NET EntityFramework. Po nejakom čase som si zaregistroval doménu, vytvoril jednoduchú webovú stránku a začal trénovať svoju silu v písaní programov pre tento framework.
Najprv musíte vytvoriť jednoduchý webový projekt s databázou. Tiež by bolo pekné okamžite sa pripojiť k databáze cez DataBase Explorer. Neskôr to bude pohodlnejšie.
Potom musí byť do projektu pridaný nový prvok „ADO.NET Entity Data Model“.
Systém bude musieť špecifikovať reťazec na pripojenie k databáze, ako aj určiť, odkiaľ bude pochádzať prvý model ADO.NET EF.
Vo svojej databáze už mám dve veľmi jednoduché tabuľky Post a User, takže som bez ďalších okolkov prinútil systém vytvoriť model na základe mojej databázy. Po tom všetkom veľmi jednoduché akcie, Mám funkčný db model. Navyše, keď som si tento model preštudoval vizuálne, nezabudol som sa pozrieť do kódu a zistiť, ako framework popisuje všetky moje triedy?
- namespace DataBaseCore
- ///
- /// V schéme nie sú žiadne komentáre pre DbModel.
- ///
- verejná čiastočná trieda DbModel: global::System.Data.Objects.ObjectContext
- ///
- /// Inicializuje nový objekt DbModel pomocou pripájacieho reťazca, ktorý sa nachádza v sekcii "DbModel" konfiguračného súboru aplikácie.
- ///
- public DbModel() :
- base("name=DbModel" , "DbModel" )
- toto .OnContextCreated();
- /* Orezané ako zbytočné */
- verejná čiastočná trieda Príspevok: global::System.Data.Objects.DataClasses.EntityObject
- ///
- /// Vytvorenie nového objektu Post.
- ///
- /// Počiatočná hodnota Id.
- verejný statický príspevok CreatePost(int id)
- Príspevok príspevku = nový príspevok();
- post.Id = id;
- návratový príspevok;
Vyškolené oko špecialistu na dátovú logiku ukázalo prítomnosť pomerne jednoduchej a elegantnej triedy, ktorá umožňovala prácu s príspevkami v systéme aj s používateľmi.
Nuž, kód už máme, zostáva len začať ho používať. A tu sa nám odhaľujú všetky kúzla a možnosti ASP.NET. Medzi značným počtom zdrojov údajov na stránke som videl zdroj údajov entity, ktorý s radosťou poskytuje údaje na požiadanie z našej triedy. Pretiahneme ho do formulára, spustíme sprievodcu nastavením a rýchlo pripojíme zdroj údajov k našej tabuľke príspevkov.
Oveľa príjemnejším sa nepochybne stal popis datasortu v kóde ASPX.
* Tento zdrojový kód bol zvýraznený pomocou Zvýrazňovača zdrojového kódu.
- < asp:EntityDataSource ID ="dsPosts" runat ="server" ConnectionString ="name=DbModel"
- DefaultContainerName ="DbModel" EntitySetName ="Príspevok" >
- asp:EntityDataSource >
Dá sa povedať – žiari milosťou.
Potom, čo sa poskytovateľ údajov objaví vo formulári, je potrebný aj spotrebiteľ. Bez toho, aby som bol chytrý, pridal som jednoduchý kód, ktorý jednoducho zobrazuje všetky príspevky v poradí.
* Tento zdrojový kód bol zvýraznený pomocou Zvýrazňovača zdrojového kódu.
- < asp:Repeater runat ="server" ID ="repPosts" DataSourceID ="dsPosts" >
- < HeaderTemplate >
- HeaderTemplate >
- < ItemTemplate >
- < div >
- < h3 >
- < asp:Label ID ="lblHeader" runat ="server" Text ="<%# Eval("Header") %>" > asp:Label >
- h3 >
- < p >
- < asp:Label ID ="lblText" runat ="server" Text ="<%# Helpers.TypographText(Eval("Text").ToString()) %>" > asp:Label >
- p >
- div >
- ItemTemplate >
- asp:Repeater >
A tu sa končí najjednoduchšia časť môjho príbehu. Všetko, čo sa doteraz urobilo, sa dá zopakovať pomocou myši. Bolo to dosť ľahké. Práve sme vytvorili objektovo orientovaný pohľad na databázu a pomocou tohto pohľadu sme začali na stránke zobrazovať dáta z databázy. Zároveň sme nikdy nenapísali jedinú požiadavku, nedostali sme údaje priamo z databázy atď ...
Čo ale zobraziť používateľovi, ak v databáze nič nemáme? Nie dobré. Na vyplnenie databázy musíte napísať formulár. Teraz ukončíme programovanie myši a začneme písať kód.
Urobil som dve najzákladnejšie úkony pre prácu s príspevkami v systéme – to je pridávanie a mazanie. Urobiť úpravy analogicky s týmto kódom nebude pre nikoho ťažké.
* Tento zdrojový kód bol zvýraznený pomocou Zvýrazňovača zdrojového kódu.
- menný priestor DBW
- príspevok verejnej triedy
- verejný príspevok()
- public static void New(String PostText, String PostHeader, Int32 UserId)
- p.Header = PostHeader;
- p.Text = Pomocníci.TypographText(PostText);
- p.PublishDate = DateTime.Now;
- p.User = (z usr v m.User kde usr.Id == UserId vyberte usr).First();
- m.AddToPost(p);
- m.SaveChanges();
- public static void Delete (Int32 PostId)
- DataBaseCore.DbModel m = new DataBaseCore.DbModel();
- DataBaseCore.Post p = new DataBaseCore.Post();
- p = (z pst v m.Post kde pst.Id == PostId vyberte pst).First();
- m.DeleteObject(p);
- m.SaveChanges();
Zdalo by sa, že všetko je jednoduché a áno, je. Existuje však niekoľko nuancií.
Po prvé, je to LINQ. Bez toho nie je ADO.NET nikde. Takže by ste sa nemali vyhýbať a vo všeobecnosti bodovať na SQL alebo LINQ, stále musíte písať dotazy.
Po druhé, tento kód je automaticky generovaný rámcom, takže v niektorých bodoch nebudete musieť očakávať veľa pohodlia a mali by ste byť vždy pripravení zmeniť kód už vytvorený štúdiom. Napríklad tu v riadku 16 by bolo pohodlnejšie použiť nie objekt typu užívateľa, ktorý som musel vybrať z databázy, ale okamžite odovzdať hodnotu identifikátora užívateľa. Pre tento kód by to bolo pohodlnejšie, ale nie je univerzálne. Preto je potrebné kód zlepšiť a premyslieť. Možno len potrebujete odovzdať nie ID užívateľa, ale objekt typu užívateľ.
Čo bude ďalej? Ďalej budem pokračovať v písaní projektu, ponorením sa do divočiny ADO.NET Entity Framework a rád sa s vami podelím o svoj výskum, milí habrauseri. Podľa toho pribudnú nové články so serióznejšími a hlbšími údajmi.
UPD. Téma je veľmi široká. Nie je tu zverejnené ani percento možností, ale pokračovanie bude 8-)
Technológie ADO .NET, . Internetová sieť, CORBA
Technológia vzdialeného prístupu k databáze ADO .NET bola vyvinutá aj pre architektúru klient-server. Okrem dvoch úrovní vzdialených databáz – klient a server – sa objavujú ďalšie úrovne – servery obchodnej logiky, ktoré implementujú obchodnú logiku aplikácií.
Technológia ADO .NET vytvára pre klienta nasledujúcu schému na prácu s databázovým serverom:
Vytvorenie spojenia so serverom;
Získanie potrebných údajov;
Zatvorenie spojenia;
Spracovanie dát;
Vytvorenie spojenia na prenos zmenených údajov späť na server.
ADO .NET je založený na dvoch hlavných moduloch:
Poskytovateľ údajov .NET FrameWork
Rezidentná relačná databáza (DataSet).
Poskytovateľ dát, ako už názov napovedá, je zodpovedný za komunikáciu aplikácie so zdrojom údajov a za manipuláciu s nimi. Poskytovateľ údajov zahŕňa nasledujúce objekty manipulácie s údajmi:
a) Pripojenie sa používa na vytvorenie pripojenia k zdroju údajov, ako aj na správu transakcií.
b) Príkaz vám umožňuje manipulovať so zdrojovými údajmi, ako aj vykonávať uložené procedúry. V tomto prípade je možné použiť parametre pre prenos dát v oboch smeroch.
c) DataAdapter slúži ako prepojenie medzi rezidentnou databázou DataSet a zdrojom údajov a zvyčajne používa objekt Command na vykonávanie príkazov SQL tak pri napĺňaní DataSet údajmi, ako aj pri spätnom odosielaní údajov zmenených klientom do zdroja. Má štyri spôsoby vykonávania týchto funkcií: SelectCommand, InsertCommand, UpdateCommand a DeleteCommand.
d) DataReader poskytuje údaje zo zdroja len na čítanie. Ak klientska aplikácia nemodifikuje dáta a nevyžaduje svojvoľný výber dát, ale stačí jednorazové zobrazenie, potom použitie DataReadera namiesto DataSet ušetrí počítačové zdroje, ako aj zvýši výkon aplikácie.
Rezidentná relačná databáza je relačná databáza prijatá klientom, ktorá je uložená v jeho rezidentnej RAM.
Klient ďalej offline spracuje dáta a v prípade potreby ich upraví, po čom sa opäť vytvorí spojenie so serverom a upravené informácie z rezidentskej databázy sa prenesú späť.
Takáto schéma interakcie je trochu podobná práci architektúry súborov -
server a často ho používajú podniky pri práci so vzdialenými databázami cez globálnej siete internet.
Na zabezpečenie prístupu k objektom cez globálny internet bol ako súčasť ADO .NET poskytnutý modul .NET FrameWork, ktorý poskytuje interakciu medzi rôznymi formátmi prezentácie údajov vrátane HTML a XML.
Z týchto charakteristík je zrejmé, že technológia ADO .NET poskytuje:
Schopnosť interakcie medzi údajmi rôznych formátov vrátane HTML a XML;
Výrazná úspora nákladov pri práci so vzdialenými databázami cez globálny internet.
Posledná aktualizácia: 31.10.2015
V dnešnej dobe je práca s dátami veľmi dôležitá. Používa sa na ukladanie údajov rôzne systémy správa databázy: MS SQL Server, Oracle, MySQL a tak ďalej. A väčšina veľkých aplikácií využíva tieto systémy správy databáz tak či onak na ukladanie údajov. Na komunikáciu medzi databázou a aplikáciou C# je však potrebný sprostredkovateľ. A práve takým sprostredkovateľom je technológia ADO.NET.
ADO.NET poskytuje dátovú technológiu, ktorá je založená na .NET Framework. Táto technológia nám predstavuje množinu tried, prostredníctvom ktorých môžeme posielať dotazy do databáz, nadväzovať spojenia, prijímať odpoveď z databázy a vykonávať množstvo ďalších operácií.
Okrem toho je dôležité poznamenať, že môže existovať veľa systémov správy databáz. V podstate sa môžu líšiť. Používa napríklad MS SQL Server jazyk T-SQL, zatiaľ čo MySQL a Oracle používajú PL-SQL. Rôzne databázové systémy môžu mať rôzne typy údajov. Ostatné body sa tiež môžu líšiť. Funkcionalita ADO.NET je však postavená tak, aby vývojárom poskytla jednotné rozhranie pre prácu so širokou škálou DBMS.
Databázové rozhranie v ADO.NET je založené na obmedzenom rozsahu objektov: Connection, Command, DataReader, DataSet a DataAdapter. Objekt Connection vytvorí pripojenie k zdroju údajov. Objekt Command vám umožňuje vykonávať operácie s údajmi z databázy. Objekt DataReader číta údaje prijaté ako výsledok požiadavky. Objekt DataSet je určený na ukladanie údajov z databázy a umožňuje s nimi pracovať nezávisle od databázy. A objekt DataAdapter je prostredníkom medzi množinou údajov a zdrojom údajov. Hlavne cez tieto objekty pôjde práca s databázou.
Ak však chcete použiť rovnakú množinu objektov pre rôzne zdroje údajov, je to vhodné poskytovateľa údajov. V skutočnosti sa prostredníctvom poskytovateľa údajov v ADO.NET uskutočňuje interakcia s databázou. Navyše pre každý dátový zdroj v ADO.NET môže existovať vlastný poskytovateľ, ktorý vlastne určuje konkrétnu implementáciu vyššie uvedených tried.
V predvolenom nastavení má ADO.NET nasledujúcich vstavaných poskytovateľov:
Poskytovateľ pre MS SQL Server
Poskytovateľ pre OLE DB (Poskytuje prístup k niektorým starým verziám MS SQL Server, ako aj k databázam Access, DB2, MySQL a Oracle)
Poskytovateľ pre ODBC (Poskytovateľ pre tie zdroje údajov, pre ktoré neexistujú poskytovatelia)
Poskytovateľ pre Oracle
Poskytovateľ EntityClient. Poskytovateľ dát pre technológiu ORM Entity Framework
Poskytovateľ pre SQL Server Compact 4.0 Server
Okrem týchto poskytovateľov, ktorí sú zabudovaní, existuje aj mnoho ďalších určených pre rôzne databázy, ako napríklad MySQL.
Hlavné menné priestory, ktoré sa používajú v ADO.NET, sú:
System.Data: definuje triedy, rozhrania, delegátov, ktorí implementujú architektúru ADO.NET
System.Data.Common: obsahuje triedy spoločné pre všetkých poskytovateľov ADO.NET
System.Data.Design: definuje triedy, ktoré sa používajú na vytváranie vlastných množín údajov
System.Data.Odbc: Definuje funkčnosť poskytovateľa údajov pre ODBC
System.Data.OleDb: Definuje funkčnosť poskytovateľa údajov pre OLE DB
System.Data.Sql: Ukladá triedy, ktoré podporujú špecifické funkcie SQL Server
System.Data.OracleClient: Definuje funkcionalitu poskytovateľa pre databázy Oracle
System.Data.SqlClient: definuje funkcionalitu poskytovateľa pre databázy MS SQL Server
System.Data.SqlServerCe: Definuje funkčnosť poskytovateľa pre SQL Server Compact 4.0
System.Data.SqlTypes: obsahuje triedy pre dátové typy MS SQL Server
Microsoft.SqlServer.Server: Ukladá komponenty pre SQL Server na komunikáciu so spoločným jazykovým modulom runtime
Schematicky môže byť architektúra ADO.NET znázornená nasledovne:
Funkčne možno triedy ADO.NET rozdeliť na dve úrovne: pripojené a odpojené. Každý poskytovateľ údajov .NET implementuje svoju vlastnú verziu Connection, Command, DataReader, DataAdapter a množstvo ďalších objektov, ktoré tvoria pripojenú vrstvu. To znamená, že pomocou nich sa vytvorí spojenie s databázou a vykoná sa interakcia s ňou. Implementácie týchto objektov pre každého konkrétneho poskytovateľa majú spravidla v názve predponu, ktorá označuje poskytovateľa:
Iné triedy ako DataSet, DataTable, DataRow, DataColumn a množstvo ďalších tvoria odpojenú vrstvu, pretože akonáhle sú dáta načítané do DataSet, môžeme s týmito dátami pracovať bez ohľadu na to, či je spojenie vytvorené alebo nie. To znamená, že po prijatí údajov z databázy je možné aplikáciu odpojiť od zdroja údajov.
Keď architekti n-tier architektúry hodnotia novú technológiu, vzor alebo stratégiu, rozhodujú sa, ako tento nový kúsok skladačky zapadne do architektúry. Ak existuje Entity Framework, integrácia nespôsobuje žiadne ťažkosti. Môže byť integrovaný do n-vrstvovej architektúry, ako aj do jednovrstvovej architektúry.
19.03.2009 15:32
Časté otázky týkajúce sa rámca entít
Pochopenie modelovania entít, mapovanie takýchto modelov na relačné databázy a navrhovanie modelov údajov entít (EDM) sú prvé kroky k pochopeniu rámca entít. Tento článok začnem odpoveďami na otázky o základoch Entity Framework vrátane triedy ObjectContext a potom odpoviem na otázky, kedy a kde používať Entity Client s Entity SQL. Okrem toho plánujem vysvetliť rozdiel medzi EntityClient a Object Services a dôsledky používania LINQ a Entity SQL dotazov spolu s týmito službami.
16.02.2009 15:15
Prehľad ADO.NET Entity Framework
V vydaní vizuálne štúdio V roku 2008 ADO.NET predstavuje novú architektúru Entity Framework. Umožňuje vývojárom pristupovať k údajom pomocou objektového modelu namiesto logického alebo relačného dátového modelu. Entity Framework pomáha abstrahovať logický diagram dáta do konceptuálneho modelu a poskytuje niekoľko spôsobov interakcie s konceptuálnym modelom prostredníctvom Object Services a nového poskytovateľa dát s názvom EntityClient. Tento mesiac článok pojednáva o tom, čo je Entity Framework, ako sa vzťahuje na aplikáciu a ako s tým myslieť na dizajn a programovanie.
13.02.2009 18:44
Vývoj dátového modelu entity s rámcom entity
Entity Framework je Nová technológia, navrhnutý pre ADO.NET. Umožňuje vývojárom vizualizovať údaje pomocou logického modelu namiesto fyzického modelu, čo poskytuje určitú flexibilitu vývoja. V júlovom čísle časopisu 2007 sme uviedli pod názvom „Dátové body“. podrobný prehľad Entity Framework technológie (oficiálne by mala byť vydaná v prvej polovici roku 2008).
13.02.2009 18:33
Používanie atribútov na normalizáciu a overenie obchodných entít
V podnikovom programovaní pri navrhovaní vrstvy prístupu k dátam často vyvstáva otázka práce s obchodnými objektmi (podnikateľskými subjektmi): ide o načítanie/zmenu/uloženie a presun medzi úrovňami. Sú na to dva hlavné prístupy – pomocou vlastných podnikateľských subjektov resp štandardné prostriedky(ADO.NET poskytuje celkom pohodlné spôsoby, ako to urobiť) - pomocou DataSet.
20.01.2007 03:54
ADO.NET: Prehľad technológie
Mnoho programátorov pracujúcich s databázami na platformy Microsoft, mohli oceniť jednoduchosť a pohodlie technológie ADO - ActiveX Data Objects. Intuitívne rozhranie a logická sada objektov spolu s jednoduchosťou programovania zaslúžene získali uznanie od programátorov. Napriek tomu Microsoft spolu s novou platformou .NET uvádza aj novú generáciu nástrojov na prístup k databázam – ADO.NET.
27.12.2006 01:32
Operácie s údajmi s hierarchickou štruktúrou. Vývoj distribuovaných aplikácií v .NET
Tento článok demonštruje techniku čítania a zápisu hierarchických sád riadkov v zdroji údajov. V príkladoch kódu uvedených v tomto článku sa pripojte k databáze údaje spoločnosti Microsoft SQL Server alebo Microsoft Desktop Engine (MSDE) používa spravovaného poskytovateľa SQL. Ak sa chcete pripojiť k iným zdrojom údajov kompatibilným s OLEDB, použite poskytovateľa spravovaného ADO.
27.12.2006 01:26
Práca s údajmi offline v ADO.NET
ADO.NET, na rozdiel od svojich predchodcov ADO a OLE DB, bol navrhnutý špeciálne pre použitie v webových aplikácií, kde neexistujú žiadne trvalé pripojenia k databáze. Tradičná práca s dátami v ADO.NET je postavená podľa nasledujúcej schémy: Pripojenie, potom sa otvorí metódou Open, vytvorí sa zapuzdrený objekt Command SQL príkaz, vykoná sa a spojenie sa potom uzavrie. Tento prístup poskytuje vláknový prístup k výsledkom dotazu. Tie. pri čítaní údajov pomocou DataReadera nemôžete preskočiť viacero záznamov ani sa vrátiť k predchádzajúcemu. Prístup k streamovaniu má maximálny výkon.