ADO.NET Entity Framework

Werbung
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
Herunterladen