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



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

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

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

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

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

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

Entity Framework alapú adatbáziselérés

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

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

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

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

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Entity Framework + LINQ oktatási segédlet

BEVEZETÉS Az objektum fogalma

2. Beadandó feladat dokumentáció

B I T M A N B I v: T M A N

Bevezetés: az SQL-be

A.NET keretrendszer (.NET Framework) három alapvetõ összetevõbõl áll:

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

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Adatbázisok* tulajdonságai

Vizuális programozás gyakorlat

Adatbázisok webalkalmazásokban

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

Informatika 11. Adatbázis szerverek Kottyán, László

Models are not right or wrong; they are more or less useful.

Adatbázis-kezelés. Harmadik előadás

A könyv tartalomjegyzéke

SQL- Utasítások csoportosítása Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Adatbázisok biztonsága

Adatbázis kezelés alapjai I.

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

Adatbázis használata PHP-ből

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

II. év. Adatbázisok és számítógépek programozása

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Biztonság java web alkalmazásokban

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

MDAC - Microsoft Data Access Components

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

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

Oracle BI Administration Tool. Repository felépítése

RIA Rich Internet Application

Adatbázis-kezelés ODBC driverrel

Vektoros grafikát tároló adatbázisok. Katona Endre Térképi adatbázisok diasorozata alapján

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

Microsoft SQL Server telepítése

IBM Business Process Manager változat 8 alváltozat 5. Az IBM Business Process Manager áttekintése

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

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

Szoftvertechnolo gia 7. gyakorlat

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

Entity Framework alapú adatbáziselérés

A feladatok kitűzése és megoldása előtt néhány szó az alkalmazásokban használt eszközökről. ADO.NET osztályai

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Programozás és adatbázis kezelés PHP ben

Fejlesztési tapasztalatok multifunkciós tananyagok előállításával kapcsolatban Nagy Sándor

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

IBM Data Server ügyfelek telepítése

Debreceni Egyetem Informatikai Kar TANULÓI NYILVÁNTARTÓ SZOFTVER FIREBIRD ADATBÁZIS ALKALMAZÁSÁVAL

Csatlakozás az IBM i rendszerhez IBM i Access for Windows: Telepítés és beállítás

SQL Server High Availability. Bevezetés az SQL Server magas rendelkezésre állási megoldásaiba

Adatbázis másolás Slony-I segítségével

FÉLÉVES FELADAT KÖVETELMÉNYEK

Book Template Title. Author Last Name, Author First Name

CAD-CAM

Blonde. Szépségszalon, Szolárium, Spa, Fitness. Ügyviteli Rendszer. Funkcionális Specifikáció. Verzió 1.1

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

WebSphere Adapters. 6. változat 2. alváltozat. WebSphere Adapter for SAP Software felhasználói kézikönyv 6. változat 2. kiadás

BBS-INFO Kiadó

Az SQL*Plus használata

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

Perzisztencia. ANTAL Margit. Sapientia - EMTE. ANTAL Margit Java technológiák 11. előadás Perzisztencia

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Adatbázisok I A relációs algebra

Programozási technológia II 3. előadás. Objektumorientált tervezés Giachetta Roberto

Háromrétegû tervezés. Kovácsmûhely. Ismerjük meg a köztes programréteg kialakítását a mod_perl/apache környezetben. Kiskapu Kft. Minden jog fenntartva

Adatbázisok I. Jánosi-Rancz Katalin Tünde 327A 1-1

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

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

Elemi alkalmazások fejlesztése IV.

Adatbázis rendszerek I

INFORMATIKAI ALAPISMERETEK

Adatbázis rendszerek I

Webes alkalmazások fejlesztése 7. előadás. Autentikáció és autorizáció (ASP.NET Core) Cserép Máté

Készítette: Szabóné Nacsa Rozália

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

DWL-G520 AirPlus Xtreme G 2,4GHz Vezeték nélküli PCI Adapter

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

SQL DDL-1: táblák és megszorítások

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Átírás:

Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 12. előadás Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2014. évi Jegyzetpályázatának támogatásával készült

Microsoft SQL Server A Microsoft rendelkezik saját SQL adatbázis-kezelő megoldással, a Microsoft SQL Serverrel (MSSQL) az SQL Server Management Studio az alapvető kliens eszköz, de használható Visual Studio is (View/Server Explorer, Tools/Sql Server) saját adatkezelő nyelve van (Transact-SQL), amely kompatibilis az SQL szabvánnyal tartalmaz pár speciális utasítást/típust is, pl. automatikus sorszámozást az IDENTITY utasítással a felhasználó-kezelés támogatja az egyedi fiókokat és Windows authentikációt ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:2

Az ADO.NET A.NET keretrendszerben az adatbázisokkal kapcsolatos adatelérésért az ADO.NET alrendszer biztosítja elődje az ADO (ActiveX Data Objects) számos lehetőséget ad az adatok kezelésére, az egyszerű SQL utasítások végrehajtásától az összetett objektumrelációs adatmodellekig az egyes adatbázis-kezelőket külön adapterek támogatják, amelyek tetszőlegesen bővíthetőek a közös komponensek a System.Data névtérben, az adatbázis-függő komponensek külön névterekben helyezkednek el (pl. System.Data.SqlClient, System.Data.OleDb) ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:3

Adatbázis kapcsolat Az adatbázis-kapcsolatot egyben, szöveges formában adjuk meg (connection string) általában tartalmazza a szerver helyét, az adatbázis nevét, a kapcsolódó adatait (felhasználónév/jelszó) a pontos tartalom adatbázis-kezelőnként változik pl.: "Server=localhost;Database=myDataBase; User Id=myUser;Password=myPassword;" // SQL Server standard biztonsággal "Server=127.0.0.1;Port=5432;Database=myDataBase; Integrated Security=true;" // PostgreSQL Windows authentikációval ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:4

Adatkezelési megoldások Az adatbázisok kezelésének több módja adott a.net keretrendszerben natív kapcsolat: direkt SQL utasítások végrehajtása a fizikai adatbázison logikai relációs modell: a fizikai adatbázis szerveződésének felépítése és adattárolás a memóriában egyszerű objektumrelációs modell (LINQ to SQL): az adatbázis-információk leképezése objektumorientált szerkezetre a sémának megfelelően entitás alapú objektumrelációs modell (ADO.NET Entity Framework): az adatbázis-információk speciális, paraméterezhető leképezése objektumorientált szerkezetre ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:5

Natív kapcsolatok A natív (direkt) kapcsolat lehetővé teszi adatbázis lekérdezések (SQL) végrehajtását a fizikai adatbázison előnyei: hatékony erőforrás-felhasználás, közvetlen kommunikáció hátrányai: SQL ismerete szükséges, az utasítások a tényleges adatokon futnak (így állandó kapcsolat szükséges az adatbázissal), összetett tevékenységek leírása nehézkes alkalmazás perzisztencia lekérdezés eredmény adatforrás ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:6

Natív kapcsolatok A kapcsolódást az adatbázishoz az SqlConnection osztály biztosítja a megfelelő kapcsolati szöveg segítségével, pl.: SqlConnection con = new SqlConnection(" "); Az adott kapcsolatban az SqlCommand osztály segítségével tudunk parancsokat létrehozni a CommandText tulajdonság tárolja az utasítást a végrehajtás a parancsokra különféleképpen történik az ExecuteNonQuery() a nem lekérdezés jellegű utasításokat futtatja az ExecuteScalar() az egy eredményt lekérdező utasításokat futtatja ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:7

Natív kapcsolatok az ExecuteReader() az általános lekérdezéseket futtatja, az eredményt egy SqlDataReader olvasóobjektumba helyezi, amellyel soronként olvasunk Pl.: SqlCommand command = con.createcommand(); command.commandtext = "select * from MyTable"; SqlDataReader reader = command.executereader(); while (reader.read()){ // amíg tudunk olvasni következő sort Console.WriteLine(reader.GetInt32(0) + ", " + reader.getstring(1)); // megfelelően lekérjük az oszlopok tartalmát }; ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:8

Objektumrelációs adatkezelés Az adatkezelő programokat általában objektumorientáltan építjük fel, így célszerű, hogy az adatkezelés is így történjen A relációs adatbázisokban az adatokat táblákba csoportosítjuk, amely meghatározza az adatok sémáját, felépítésének módját, azaz típusát egy sor tárolja egy adott elem adatait, azaz a sor a típus példánya Ez a megfeleltetés könnyen átültethető objektumorientált környezetre, a sorok adják az objektumokat, a táblák az osztályokat Table «property» + ColumnA() :int + ColumnB() :string + ColumnC() :bool ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:9

Objektumrelációs adatkezelés A megfeleltetést objektumrelációs leképezésnek (objectrelational mapping, ORM) nevezzük magas szintű transzformációját adja az adatbázisnak, amely a programban könnyen használható ugyanakkor szabályozza az adatok kezelésének módját a létrejött osztályok csak adatokat tárolnak, műveleteket nem végeznek alkalmazás perzisztencia objektumrelációs leképezés adatforrás ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:10

ADO.NET Entity Framework Az ADO.NET Entity Framework valósítja meg az adatok összetett, objektumrelációs leképezését alapja az entitás adatmodell (Entity Data Model, EDM), amely leírja az entitások társítását az adatforrás elemeihez általában egy entitás egy tábla sorának objektumorientált reprezentációja, de ez tetszőlegesen variálható az entitások között kapcsolatok állíthatóak fel, amely lehet asszociáció, vagy öröklődés támogatja a nyelvbe ágyazott lekérdezéseket (LINQ), a dinamikus adatbetöltést, az aszinkron adatkezelést névtere a System.Data.Entity ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:11

Entitás adatmodellek létrehozása A modell létrehozására három megközelítési mód áll rendelkezésünkre: adatbázis alapján (database first): az adatbázis-szerkezet leképezése az entitás modellre (az adatbázis séma alapján generálódik a modell) tervezés alapján (model first): a modellt manuálisan építjük fel és állítjuk be a kapcsolatokat (a modell alapján generálható az adatbázis séma) kód alapján (code first): a modellt kódban hozzuk létre A modellben, illetve az adatbázis sémában történt változtatások szinkronizálhatóak, mindkettő könnyen módosítható ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:12

Entitás adatmodellek létrehozása Pl. (adatbázis): create table Customer( -- tábla létrehozása -- tábla oszlopai Email VARCHAR(MAX) PRIMARY KEY, -- elsődleges kulcs Name VARCHAR(50), AddressId INTEGER, ); -- idegen kulcs CONSTRAINT CustomerToAddress FOREIGN KEY (AddressId) REFERENCES Address (Id) ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:13

Entitás adatmodellek létrehozása Pl. (modell): class Customer // entitástípus létrehozása { [Key] // elsődleges kulcs public String Email { get; set; } [StringLength(50)] // megszorítás public String Name { get; set; } [ForeignKey("AddressId")] // idegen kulcs public Address Address { get; set; } } public ICollection<Order> Orders { get; set; } ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:14

Entitás adatmodellek használata Az entitásokat egy adatbázis modell (DbContext) felügyeli, amelyben eltároljuk az adatbázis táblákat (DbSet) egy aszinkron modellt biztosít, a változtatások csak külön hívásra (SaveChanges) mentődnek az adatbázisba pl.: public class SalesContext : DbContext { // kezelő létrehozása public DbSet<Customer> Customers { get; set; } // adatbázisbeli tábla } ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:15

Entitás adatmodellek használata Az adattábla (DbSet) biztosítja lekérdezések futtatását, adatok kezelését létrehozás (Create), hozzáadás (Add, Attach), keresés (Find), módosítás, törlés (Remove) az adatokat és a lekérdezéseket lusta módon kezeli az adatok csak lekérdezés hatására töltődnek a memóriába, de betölthetjük őket előre (Load) a LINQ lekérdezések átalakulnak SQL utasítássá, és közvetlenül az adatbázison futnak egy tábla nem tárolja a csatolt adatokat, azok betöltése (Include) ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:16

Entitás adatmodellek használata Pl.: SalesContext db = new SalesContext(); IEnumreable<Customer> customer = Db.Customers.FirstOrDefault(cust => cust.email == "groberto@inf.elte.hu"); // LINQ lekérdezés if (customer == null) { customer = new Customer { Name = "Roberto", Email = "groberto@inf.elte.hu" }; db.customers.add(customer); // entitás létrehozása és felvétele db.savechanges(); // változások elmentése } ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:17

Entitás adatmodellek használata Pl.: IQuery<Customer> query = db.customers.include(cust => cust.address); // a megadott tulajdonságok (csatolt adatok) // is betöltésre kerülnek, hasonlóan // táblanévvel:.include("address") Boolean anybudapest = query.any(cust => cust.address.city == "Budapest"); // a lekérdezés az adatbázisban fut query.load(); // adatok betöltése anybudapest = query.any(cust => cust.address.city == "Budapest"); // a lekérdezés a memóriában fut ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:18

Entitás alapú modell felhasználása Az entitás alapú modell könnyen alkalmazható az MVVM architektúrájú alkalmazásban akár a perzisztencia, akár a modell rétegben az entitásmodell könnyen kiegészíthető, amennyiben további tulajdonságokra, metódusokra van szükségünk (az osztályok parciálisak) minden tulajdonságokon keresztül érhető el, így közvetlenül köthető bármilyen vezérlőre a lekérdezések eredményét csupán továbbítani kell egy felügyelt gyűjteményhez (ObservableCollection) az értékeken végezhetünk átalakítást is (IValueConverter) ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:19

Adatrácsok Az adatok grafikus megjelenítésére célszerű adatrácsot (DataGrid) használni a tartalma (ItemsSource) köthető, adatai szerkeszthetőek az oszlopai automatikusan generálhatóak (AutoGenerateColumns), vagy manuálisan megadhatóak (Columns), különböző típusokból választva (szövegdoboz, legördülő menü, kijelölő doboz, ) lehetőségünk van a sorok/oszlopok direkt manipulálására (CanUserAddRows, CanUserDeleteRows, ), rendezésre, kijelölt értékek lekérdezésére (SelectedItems, SelectedIndex, ), a lekérdezés módjának manipulálására (SelectionMode, SelectionUnit) ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:20

Adatrácsok Pl.: <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding }"> <!-- adatkötött adatrács --> <DataGrid.Columns> <!-- oszlopok megadása --> <DataGridTextColumn Header="Course" Width="Auto" IsReadOnly="True" Binding="{Binding }" /> <!-- adatkötött szövegdoboz oszlop --> <DataGridTextColumn Header="Student Code" Width="Auto" IsReadOnly="True" Binding="{Binding }" /> </DataGrid.Columns> </DataGrid> ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:21

Adatrácsok oszlopai Az adatrács több oszloptípussal rendelkezik, pl.: szövegbeviteli oszlop (DataGridTextColumn): megadható rá adatkötés (Binding) legördülő menü (DataGridComboBoxColumn): megadható rá adatforrás (ItemsSource), valamint kiválasztott elem kötése (SelectedItemBinding) egyedi vezérlő (DataGridTemplateColumn): egyedileg testre szabható vezérlő, ahol adatsablonok (DataTemplate) segítségével, pl. definiálható a cella megjelenítés módja (CellTemplate) a cellaszerkesztés módja (CellEditorTemplate) ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:22

Példa Feladat: Készítsünk el az utazási ügység épületek (Building) táblájának karbantartó alkalmazását, ahol grafikus felületen keresztül szerkeszthetjük a tartalmat. az alkalmazást MVVM architektúrában valósítjuk meg, entitás alapú modellt használunk a nézetmodell (TravelAgencyViewModel) az épületeket egy felügyelt gyűjteménybe (Buildings) helyezi, ezt kötjük a nézetre, valamint három parancsot (betöltés, mentés, kilépés) a nézetben létrehozunk egy adatrácsot, amelyben a név, városnév, tengerpart távolság, tengerpart típus és megjegyzés értékeket jelenítjük meg ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:23

Példa Tervezés (adatbázis): ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:24

Példa Tervezés (architektúra): Application App Window View::MainWindow INotifyPropertyChanged ViewModel::ViewModelBase +DataContext ViewModel::TravelAgencyViewModel ICommand ViewModel::DelegateCommand ObjectContext Model::TravelAgencyEntities * * * EntityObject Model::City EntityObject Model::Building EntityObject Model::Apartment ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:25

Példa Megvalósítás (TravelAgencyViewModel.cs): try { Buildings = new ObservableCollection<Building>( _model.building.include("apartment").include("city") ); // apartmanok betöltése a csatolt táblákkal // együtt _loaded = true; // most már lehet menteni, de // nem lehet csatlakozni StatusMessage = "Adatok betöltése sikeres."; } catch { StatusMessage = "Adatok betöltése sikertelen!"; } ELTE IK, Eseményvezérelt alkalmazások fejlesztése II 12:26