Entity Framework alapú adatbáziselérés

Hasonló dokumentumok
Entity Framework alapú adatbáziselérés

Entity Framework alapú adatbáziselérés 2

Vizuális programozás gyakorlat

Szoftvertechnolo gia gyakorlat

Szoftvertechnolo gia 7. gyakorlat

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Entity Framework + LINQ oktatási segédlet

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Webszolgáltatás és XML alapú adatbázis. 1. Az adatbázis megtervezése

Féléves feladat. Vezetéknév Keresztnév

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Vizuális programozás gyakorlat

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

INFORMATIKAI ALAPISMERETEK

Access adatbázis elérése OLE DB-n keresztül

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Objektum Orientált Programozás V.

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)

Konzolalkalmazások gyors tesztelése

Eseményvezérelt és objektumorientált programozás

munkafüzet open eseményéhez

Objektumorientált Programozás V.

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Adatbázis kezelés Delphiben. SQL lekérdezések

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

A C# PROGRAMOZÁSI NYELV

BME MOGI Gépészeti informatika 5.

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Johanyák Zsolt Csaba: Képnézegető program oktatási segédlet

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Microsoft SQL Server telepítése

Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1

Eseménykezelés - Lottó játék

Kalapácsvetés 2016 szöveges

Windows hálózati adminisztráció segédlet a gyakorlati órákhoz

A C# programozási nyelv alapjai

A könyv tartalomjegyzéke

MEDITOR 5 KLÓN telepítési segédlete

Adatbázis rendszerek II. Adatbázis elérése C# kliens programból ADO.NET API-n keresztül

Tájékoztató. Használható segédeszköz: -

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Vizuális programozás Komplex számok

Access gyakorlati feladatok lépésről lépésre

7. Laboratóriumi gyakorlat, 1. rész : Vezérlési szerkezetek II.

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

C#---Access adatbáziskezelési gyakorlat

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

A szerzõrõl... xi Bevezetés... xiii

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Generikus Típusok, Kollekciók

Hálózati adminisztráció Linux (Ubuntu 8.04) 7. gyakorlat

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

1.2. NFS kliens telepítése és beállítása

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

BME MOGI Gépészeti informatika 4.

Programozási technológia

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté.

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

INFORMATIKAI ALAPISMERETEK

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Frissítési útmutató LOGA. Kiadva: augusztus 12.

INFORMATIKAI ALAPISMERETEK

Gyakorlati vizsgatevékenység B

Eseményvezérelt alkalmazások fejlesztése II 10. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Programozási nyelvek Java

Tanúsítványkérelem készítése, tanúsítvány telepítése Microsoft Internet Information szerveren

Szolgáltatási szerződés elektronikus aláírása

Vizuális programozás gyakorlat

INFORMATIKAI ALAPISMERETEK

Objektum elvu alkalmaza sok fejleszte se

OOP: Java 8.Gy: Gyakorlás

JAVA SE/ME tanfolyam tematika

A CCL program használatbavétele

Adatbázis, adatbázis-kezelő

7. K: JAVA alapok Konzultáció

Megújított tanúsítvány cseréje a Windows tanúsítványtárban

BME MOGI Gépészeti informatika 13.

JEE tutorial. Zsíros Levente, 2012

Swing GUI készítése NetBeans IDE segítségével

PHP-MySQL. Adatbázisok gyakorlat

Programozás I. gyakorlat

Átírás:

Entity Framework alapú adatbáziselérés Dr. Johanyák Zsolt Csaba http://johanyak.hu A gyakorlat célja Model-first megközelítéssel Entity-Framework modell létrehozása, majd ebből adatbázis generálása LocalDB-ben. adatok felvitele közvetlenül illetve programból, lekérdezések gyakorlása. 1. Az Entity Framework modell és az adatbázis létrehozása Töröljük a Class1.cs állományt.

A projekthez adunk egy Entity Data Model-t.

Megadjuk az entitás konténer osztály nevét.

Létrehozunk egy enszemély nevű entitást. Beállítjuk a nevét és az entitáshalmaz nevet. Beállítjuk, hogy a tulajdonságok nevei is megjelenjenek.

Hozzáadunk újabb tulajdonságokat. Egy személyhez több szám is tartozhat, ezért a számhoz létrehozunk egy külön entitást.

Összekötjük őket egy Association kapcsolattal az enszemélytől kiindulva. Navigációs tulajdonságok jelennek meg mindkét entitásnál. Az enszemély oldalon a tulajdonság egy gyűjtemény, ezért a nevét többes számba tesszük a Properties ablakban. Létrehozunk egy entitást enhelység néven.

Egy helységben több személy is lakhat. Ennek megfelelően az enhelység felől indítjuk a kapcsolatot, majd itt is többes számba tesszük a személyeket. Legeneráljuk az adatbázist.

Az adatokat egy adatbázis állományban fogjuk tárolni a projekt könyvtárában.

Kiválasztjuk a projekt könyvtárát, majd megadjuk az állománynevet.

Futtatjuk a szkriptet.

Hibaüzenet: Megoldásként megadjuk az adatállomány elérési útvonalát. Majd újból indítjuk a szkriptet. Ekkor már sikeres a végrehajtás. A Server Explorerben leellenőrizhetjük az adatbázis meglétét.

2. Adatfelvitel közvetlenül Vigyünk fel adatokat az adatbázisba a Visual Studio segítségével. Helységadatok. Csak a 2. és 3. oszlopba kell adatokat írni, az 1. oszlop automatikusan töltődik ki.

Személyek Telefonszámok 3. Adatfelvitel programból Hozzunk létre egy konzolalkalmazás projektet a megoldáson belül.

Vegyük fel a referenciák közé az osztálykönyvtár projektünket.

Állítsuk be indító projektnek a konzol projektet.

Állítsuk be a DAL projekt névterét felhasznált névtérként a konzol alkalmazásban. Létrehozunk egy adattagot az entitáskonténer számára, majd felvesszük a referenciák közé az Entity Framework-öt. Tegyük az adattagot statikussá.

Hozzunk létre egy konténer objektumot. Készítsünk egy statikus metódust adatfelvitel céljára. } private static void Adatfelvitel() { var h = new enhelység {Irsz = 2090, Név = "Remeteszőlős"}; var sz = new enszemély { Vezetéknév = "Argon", Utónév = "Géza", enhelység = h, Lakcím = "Ordas köz 6." }; h.enszemélyek.add(sz); var t1 = new entelefonszám {Szám = "+36-13-555-555", enszemély = sz }; var t2 = new entelefonszám {Szám = "+36-13-556-555", enszemély = sz }; sz.entelefonszámok.add(t1); sz.entelefonszámok.add(t2); cntelefonszámok.enhelységek.add(h); cntelefonszámok.enszemélyek.add(sz); cntelefonszámok.entelefonszámok.add(t1); cntelefonszámok.entelefonszámok.add(t2); cntelefonszámok.savechanges(); } Futtassuk le a programot, majd ellenőrizzük le, hogy az adatbázisba kerültek-e az adatok.

Hiba: nincs kapcsolatunk az adatbázishoz. Megoldás: másoljuk át az App.Config állományt az osztálykönyvtár projektből a konzolalkalmazás projektjébe, majd a konzolalkalmazás Main metódusának elejére helyezzük el az alábbi két utasítást. var DataDir = Directory.GetParent(Directory.GetParent(Directory.GetParent( Directory.GetCurrentDirectory()).FullName).FullName) + "\\Telefonszamok_DAL"; AppDomain.CurrentDomain.SetData("DataDirectory", DataDir); Indítsuk el a konzolalkalmazást. Amennyiben hibaüzenet nélkül lefut, akkor tegyük megjegyzésbe az Adatfelvitel(); utasítást, mert erre már nem lesz szükségünk a továbbiakban, az adatok bekerültek az adatbázisba. Ellenőrizzük le a Server Explorer segítségével, hogy sikerült-e az adatfelvitel.

4. Lekérdezések programból Készítsünk egy lekérdező metódust, ami a lekérdezés eredményét kiírja a konzolra. A metódusban vegyük sorra a személyeket, és írassuk ki az adataikat. A telefonszámok egymástól vesszővel elválasztva jelenjenek meg. Hívjuk meg a Lekérdez() metódust a Main() metódusból. private static void Lekérdez() { Console.WriteLine("Összes adat\r\n-----------"); foreach (var x in cntelefonszámok.enszemélyek) { var s = x.vezetéknév + " " + x.utónév + ": " + x.enhelység.irsz + " " + x.enhelység.név + ", " + x.lakcím + ", "; foreach (var y in x.entelefonszámok) { s += y.szám; if (y!= x.entelefonszámok.last()) s += ", "; } Console.WriteLine(s); } } Futtassuk le a programot.

5. Az adatbázisban tárolt adatok lementése egy SQL szkriptbe az adatbázis szerkezettel együtt, majd az adatbázis újbóli létrehozása. A gyakorlat célja az, hogy áttekintsük, hogy hogyan tudjuk az adatbázist átvinni egy másik gépre/kiszolgálóra az adatbázis állomány (Telefonszamok.mdf) mozgatása/másolása nélkül. A feladat végrehajtásához a Microsoft SQL Server Management Studio-t és a Visual Studio-t használjuk. Indítsuk el a Microsoft SQL Server Management Studio-t.

Lementés SQL-szkriptbe:

Visual Studio-ban nyissuk meg a szkriptet. Töröljük belőle az adatbázis fájl létrehozására vonatkozó részt (a kijelölt rész az alábbi képen), majd mentsük el a szkriptet. A szkript kipróbálásához először töröljük a meglévő adatbázist. Ehhez zárjuk le Visual Studioban a kapcsolatot, majd töröljük a kapcsolatot.

Microsoft SQL Management Studio-ban töröljük az adatbázist.

Futtassuk le a szkriptet.

Ellenőrizzük le az adatbázis meglétét a Microsoft SQL Management Studio-ban. 6. Adatbázis bővítése újabb entitással Hozzunk létre egy újabb entitást a diagramban az e-mail címek tárolására. Egy személynek több e-mail címe is lehet.

Mentsük le egy szkriptbe a jelenlegi adatbázis adatait. Futtassuk le az edmtelefonszamok.edmx_uj.sql szkriptet, majd ellenőrizzük le az új adatbázis létrejöttét.

Futtassuk le az adatokat tartalmazó szkriptet. Vigyünk fel néhány e-mail címet Visual Studioból. Egészítsük ki a lekérdez metódust úgy, hogy az e-mail címeket is jelenítse meg. private static void Lekérdez() { Console.WriteLine("Összes adat\r\n-----------"); foreach (var x in cntelefonszámok.enszemélyek) { var s = x.vezetéknév + " " + x.utónév + ": " + x.enhelység.irsz + " " + x.enhelység.név + ", " + x.lakcím + ", "; foreach (var y in x.entelefonszámok) { s += y.szám+", "; } foreach (var y in x.enemailcímek) { s += y.cím; if (y!= x.enemailcímek.last()) s += ", "; } Console.WriteLine(s); } }

Mivel a telefonszám után most már mindig kell vessző, ezért a telefonszámos foreach ciklus magja egyszerűsödött, sőt lecserélhetjük egy LINQ kifejezésre. s = x.entelefonszámok.aggregate(s, (current, y) => current + (y.szám + ", ")); Írassuk ki a telefonszámmal nem rendelkező személyek adatait. Console.WriteLine(); Console.WriteLine("Telefonszámmal nem rendekező személyek adatai"); Console.WriteLine("---------------------------------------------"); var er = (from x in cntelefonszámok.enszemélyek where x.entelefonszámok.count == 0 select x).tolist(); var z = er.aggregate("", (current, x) => current + x.vezetéknév + " " + x.utónév + ": " + x.enhelység.irsz + " " + x.enhelység.név + ", " + x.lakcím + ", " + x.enemailcímek.aggregate("", (curr, y) => curr + (y.cím + ", "))); Console.WriteLine(z); Módosítsuk úgy a sztring összeállítását, hogy az utolsó e-mail cím után ne legyen vessző. var z = er.aggregate("", (current, x) => current + x.vezetéknév + " " + x.utónév + ": " + x.enhelység.irsz + " " + x.enhelység.név + ", " + x.lakcím + ", " + x.enemailcímek.aggregate("", (curr, y) => (y!=x.enemailcímek.last())?curr + (y.cím + ", "):y.cím)); Tartalomjegyzék Entity Framework alapú adatbáziselérés... 1

1. Az Entity Framework modell és az adatbázis létrehozása... 1 2. Adatfelvitel közvetlenül... 15 3. Adatfelvitel programból... 16 4. Lekérdezések programból... 22 5. Az adatbázisban tárolt adatok lementése egy SQL szkriptbe az adatbázis szerkezettel együtt, majd az adatbázis újbóli létrehozása.... 23 6. Adatbázis bővítése újabb entitással... 33 Tartalomjegyzék... 37