EntityClient-Anbieter für Entity Framework
Der EntityClient-Anbieter ist ein von Entity Framework-Anwendungen verwendeter Datenanbieter für den Zugriff auf Daten, die in einem konzeptionellen Modell beschrieben sind. Weitere Informationen zu konzeptionellen Modellen finden Sie unter Modellieren und Zuordnen. EntityClient greift mithilfe von anderen .NET Framework-Datenanbietern auf die Datenquelle zu. Beim Zugreifen (SqlClient) auf eine SQL Server-Datenbank verwendet EntityClient z. B. den .NET Framework-Datenanbieter für SQL Server. Weitere Informationen zum SqlClient-Anbieter finden Sie unter SqlClient für Entity Framework. Der EntityClient-Anbieter ist im System.Data.EntityClient-Namespace implementiert.
Verwalten von Verbindungen
Entity Framework baut auf den speicherspezifischen ADO.NET-Datenanbietern auf und stellt eine EntityConnection mit einem zugrunde liegenden Datenanbieter und einer relationalen Datenbank bereit. Zur Erstellung eines EntityConnection-Objekts muss auf Metadaten verwiesen werden, die die notwendigen Modelle und die notwendige Zuordnung sowie einen speicherspezifischen Datenanbieternamen und eine Verbindungszeichenfolge enthalten. Nachdem die EntityConnection eingerichtet wurde, kann auf Entitäten über die aus dem konzeptionellen Modell erstellten Klassen zugegriffen werden.
In der Datei app.config kann eine Verbindungszeichenfolge angegeben werden.
Der System.Data.EntityClient enthält auch die EntityConnectionStringBuilder-Klasse. Mithilfe dieser Klasse können Entwickler syntaktisch korrekte Verbindungszeichenfolgen programmgesteuert erstellen sowie vorhandene Verbindungszeichenfolgen analysieren und neu erstellen, indem sie Eigenschaften und Methoden der Klasse verwenden.
Erstellen von Abfragen
Die Programmiersprache Entity SQL ist ein speicherunabhängiger Dialekt von SQL, der direkt mit konzeptionellen Entitätsschemas verwendet werden kann und Entity Data Model-Konzepte wie Vererbung und Beziehungen unterstützt. Die EntityCommand-Klasse wird zur Ausführung eines Entity SQL-Befehls für ein Entitätsmodell verwendet. Bei der Erstellung von EntityCommand-Objekten kann der Name einer gespeicherten Prozedur oder einen Abfragetext angegeben werden. Entity Framework arbeitet mit speicherspezifischen Datenanbietern, um generisches Entity SQL in speicherspezifische Abfragen zu übersetzen. Weitere Informationen zum Schreiben von Entity SQL-Abfragen finden Sie unter Entity SQL-Sprache.
Im folgenden Beispiel wird ein EntityCommand-Objekt erstellt und dessen EntityCommand.CommandText-Eigenschaft ein Entity SQL-Abfragetext zugewiesen. Diese Entity SQL-Abfrage ruft nach dem Listenpreis geordnete bestellte Produkte vom konzeptionellen Modell ab. Im folgenden Code werden keinerlei Annahmen über das Speichermodell vorausgesetzt.
EntityCommand cmd = conn.CreateCommand();
cmd.CommandText = @"SELECT VALUE p
FROM AdventureWorksEntities.Product AS p
ORDER BY p.ListPrice";
Ausführen von Abfragen
Wenn eine Abfrage ausgeführt wird, wird sie analysiert und in eine kanonische Befehlsstruktur konvertiert. Die darauf folgende Verarbeitung wird mit der Befehlsstruktur ausgeführt. Die Befehlsstruktur ermöglicht die Kommunikation zwischen dem System.Data.EntityClient und dem zugrunde liegenden .NET Framework-Datenanbieter wie System.Data.SqlClient.
Der EntityDataReader stellt die Ergebnisse eines für ein konzeptionelles Modell ausgeführten EntityCommand zur Verfügung. Zum Ausführen des Befehls, das den EntityDataReader zurückgibt, rufen Sie ExecuteReader auf. Der EntityDataReader implementiert IExtendedDataRecord, um umfangreiche strukturierte Ergebnisse zu beschreiben.
Verwalten von Transaktionen
Im Entity Framework gibt es zwei Möglichkeiten zur Verwendung von Transaktionen: automatisch und explizit. Automatische Transaktionen verwenden den System.Transactions-Namespace, und explizite Transaktionen verwenden die EntityTransaction-Klasse.
Weitere Informationen zum Aktualisieren von Daten, die über ein konzeptionelles Modell verfügbar gemacht werden, finden Sie unter Verwalten von Transaktionen im Entity Framework.
In diesem Abschnitt
Vorgehensweise: Ausführen einer Abfrage, die PrimitiveType-Ergebnisse zurückgibt
Vorgehensweise: Ausführen einer Abfrage, die StructuralType-Ergebnisse zurückgibt
Vorgehensweise: Ausführen einer Abfrage, die RefType-Ergebnisse zurückgibt
Vorgehensweise: Ausführen einer Abfrage, die komplexe Typen zurückgibt
Vorgehensweise: Ausführen einer Abfrage, die geschachtelte Auflistungen zurückgibt
Vorgehensweise: Ausführen einer parametrisierten Entity SQL-Abfrage mithilfe von „EntityCommand“
Vorgehensweise: Ausführen einer parametrisierten gespeicherten Prozedur mithilfe von „EntityCommand“
Vorgehensweise: Ausführen einer polymorphen Abfrage
Vorgehensweise: Navigieren in Beziehungen mit dem Navigate-Operator