Entwicklung verteilter Anwendungen I WS 2013/14 Prof. Dr. Herrad Schmidt Kapitel 5 ADO.NET Entity Framework Entwicklung verteilter Anwendungen I, WS 13/14 ADO.NET s.a: http://msdn.microsoft.com/en-us/library/e80y5yhx(VS.100).aspx ADO.NET ist eine Klassenbibliothek mit Datenzugriffsdiensten zur Entwicklung verteilter Anwendungen, die auf eine gemeinsame Datenbasis zugreifen. ADO.NET ermöglicht den Zugriff auf relationale Datenbanken, XMLund andere Anwendungsdaten. ADO.NET beinhaltet data provider zur Verbindung zu einer Datenbasis, zur Ausführung von SQL-Befehlen und zur Bereitstellung von Daten. ADO.NET Architektur siehe: http://msdn.microsoft.com/enus/library/27y4ybxw(VS.100).aspx Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 2 Entwicklung verteilter Anwendungen I, WS 13/14 ADO.NET Entity Framework Quelle: http://msdn.microsoft.com/en-us/library/bb399567(VS.100).aspx Alternativ zu diesem direkten Zugriff kann die Entwicklung der verteilten Anwendung mit ADO.NET auf einem Objektmodell (conceptual application model) basieren. Dazu wird vom ADO.NET Entity Framework das relationale Schema der Datenbank in ein konzeptionelles Schema (.NET-Objektstruktur) abgebildet object-relational mapping (ORM). Die Datenabfrage und –manipulation für das konzeptionelle Modell erfolgt mit Hilfe von LINQ to Entities (LINQ=Language Integrated Query). Das Entity Framework enthält einen EntityClient Data Provider, der die Verbindungen verwaltet, Entitätsabfragen in datenquellen-spezifische Abfragen übersetzt und einen Data Reader zurückgibt, mit dem Entitätsdaten in Objekte umgesetzt werden. .NET Framework 4 enthält einen EDM (Entity Data Model) Generator, der die Verbindung zur Datenquelle herstellt und eine von ObjectContext abgeleitete Klasse generiert, die den Entity Container im conceptual model repräsentiert. Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 3 Entwicklung verteilter Anwendungen I, WS 13/14 ADO.NET Entity Framework Architektur s.a.: http://msdn.microsoft.com/en-us/library/bb399567(VS.100).aspx Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 4 Entwicklung verteilter Anwendungen I, WS 13/14 Implementierung in Visual Studio: Zum Projekt hinzufügen: ADO.NET Entity Data Model Datenbank existiert schon: „Aus Datenbank generieren“ Datenverbindung auswählen siehe nächste Folie Modell soll neu angelegt werden: „Leeres Modell“ Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 5 Entwicklung verteilter Anwendungen I, WS 13/14 Datenbankzugriff: Zur Erstellung einer Datenverbindung mit dem SQL-Server SQL-Server-Authentifizierung: Benutzername: schmidt Kennwort: hs Nach der Kennworteingabe kann die Verbindung getestet werden (Testverbindung). Datenbankname: … auswählen: „sensible Daten in die Verbindungszeichenfolge einfügen“ Datenbankobjekte auswählen s.a. Server-Explorer im Visual Studio Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 6 Entwicklung verteilter Anwendungen I, WS 13/14 Vereinbarung bei der Erstellung eines ADO.NET Entity Data Model: sensible Daten in die Verbindungszeichenfolge einfügen Bei der Auswahl der Datenbankobjekte: nur die Tabellen, die von der jeweiligen Komponente gebraucht werden Anklicken: Generierte Objektnamen in den Singular oder Plural setzen Fremdschlüsselspalten in das Modell einbeziehen Erzeugung eines Klassendiagramms des Modells: *.Designer.cs Kontextmenü: Klassendiagramm anzeigen Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 7 Entwicklung verteilter Anwendungen I, WS 13/14 Beispiele für einige LINQ-Abfragen: var alteAutoren = from autor in daten.authors where (int)autor.Sterbejahr-(int)autor.Geburtsjahr > 60 select autor.Nachname; var qDichter = daten.authors.Where(d => d.Nachname.StartsWith("H")) .OrderBy(d => d.Nachname); // Zugriff mit Index: author meinAutor = daten.authors.Single(a => a.AutorenID == 108); // Abfrage eines Autors mit seinen Werken: author meinAutor = litDB.authors.Include("works").Single(aw => aw.AutorenID == 101); // alle Autoren, für die es Werke in works gibt: var autoren = litDB.authors.Where(a => a.works.Any()).ToList(); Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 8 Entwicklung verteilter Anwendungen I, WS 13/14 Solution 4_ADO.NET_EntityFramework: A_AbfrageMitEDM B_DBAenderungen C_LiteraturDB Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 9 Entwicklung verteilter Anwendungen I, WS 13/14 Aufgabe 2) Entwickeln Sie eine Datenbankapplikation mit ADO.NET Entity Framework für … a) die Datenbank Komponisten: Es werden alle Komponisten angezeigt und dem Benutzer eine Mehrfachauswahl ermöglicht. Für alle ausgewählten soll die Anzahl der CDs um eins erhöht werden. b) die Datenbank Literatur: Für einen Autor, der bereits in der Datenbank angelegt ist, soll ein zusätzliches Werk eingetragen werden (mit Genre). Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 5 Folie 10