Freigeben über


Arbeiten mit Entitätsdaten

Das Entity Framework kompiliert einen Satz von konzeptionellen Schemas und Speicherschemas zusammen mit den Mappings zwischen ihnen in bidirektionale Paare von Entity SQL-Anweisungen, die Clientansichten genannt werden. Diese Ansichten ermöglichen die Abfrage- und Aktualisierungsverarbeitung im Laufzeitmodul. Der Mappingcompiler, der die Ansichten generiert, kann entweder zur Entwurfszeit oder zur Laufzeit aufgerufen werden, wenn die erste Abfrage eines Entitätsdatenmodell (EDM)-Schemas ausgeführt wird.

Das Entity Framework baut auf speicherspezifischen ADO.NET-Datenanbietern auf, indem es einem zugrunde liegenden Datenanbieter und einer relationalen Datenbank eine EntityConnection bereitstellt.

Wenn eine Abfrage ausgeführt wird, wird sie analysiert und in eine kanonische Befehlsstruktur konvertiert, die eine Objektmodelldarstellung der Abfrage darstellt. Kanonische Befehlsstrukturen stellen Auswahl-, Aktualisierungs-, Einfügungs- und Löschbefehle dar. Die weitere Verarbeitung erfolgt mithilfe der Befehlsstruktur, die die Kommunikation zwischen dem System.Data.EntityClient-Anbieter und dem zugrunde liegenden .NET Framework-Datenanbieter, wie System.Data.SqlClient, ermöglicht.

Das folgende Diagramm illustriert die Entity Framework-Architektur für den Datenzugriff:

Diagramm zur Entity Framework-Architektur

Abfragen von Objekten

Die Entity Framework-Tools generieren eine von ObjectContext abgeleitete Klasse, die den im konzeptionellen Modell definierten Entitätencontainer darstellt. Die ObjectContext-Klasse unterstützt Abfragen eines EDM, die Entitäten als Objekte zurückgeben, sowie das Erstellen, Aktualisieren und Löschen von Entitätsobjekten. Das Entity Framework unterstützt Objektabfragen eines EDM. Abfragen können mit Entity SQL, Language Integrated Query (LINQ) und Objektabfrage-Generator-Methoden erstellt werden.

In einem konzeptionellen Modell sind Entitäten über Zuordnungen miteinander verknüpft. In der Objektebene werden diese Zuordnungen durch Eigenschaften dargestellt, die auf Grundlage eines Entitätsverweises Auflistungen verbundener Objekte verfügbar machen. Im Modell "School" ruft beispielsweise Department.Course auf Grundlage der Zuordnung zwischen Course und Department eine Entitätsauflistung von Course-Objekten ab. Da Objekte, auf die verwiesen wird, nicht automatisch geladen werden, muss die Load-Methode für den Entitätsverweis aufgerufen werden, um die Daten des verbundenen Objekts in den Objektkontext zu laden. Es kann auch ein Abfragepfad angegeben werden, in dem definiert wird, welche verbundenen Objekte mit zurückgegebenen Objekten geladen werden. Weitere Informationen finden Sie unter Abfragen von Daten als Objekte (Entity Framework).

Im folgenden Beispiel des Schnellstarts wird eine Abfrage dargestellt, die bei ihrer Ausführung alle Department-Objekte abruft. Mit der Definition eines Abfragepfads wird sichergestellt, dass die mit Department-Objekten verbundenen Course-Objekte ebenfalls zurückgegeben werden. Mit einer Entity SQL WHERE-Klausel werden die zurückgegebenen Objekte nach Name sortiert.

' Define a query that returns all Department objects and related
' Course objects, ordered by name.
Dim departmentQuery As ObjectQuery(Of Department) = _
    schoolContext.Department.Include("Course").OrderBy("it.Name")
// Define a query that returns all Department objects and related
// Course objects, ordered by name.
ObjectQuery<Department> departmentQuery =
    schoolContext.Department.Include("Course").OrderBy("it.Name");

Weitere Informationen finden Sie unter Abfragen von Daten als Objekte (Entity Framework).

Ein EDM kann so definiert werden, dass gespeicherte Prozeduren verwendet werden, um Abfragen in der Datenquelle auszuführen. Die Resultsets dieser gespeicherten Prozeduren werden Entitäten im konzeptionellen Modell zugeordnet. Weitere Informationen finden Sie unter Unterstützung für gespeicherte Prozeduren (Entity Framework).

Arbeiten mit Objekten

Ein Objekt in einem Objektkontext ist die Entitätstypdarstellung von Daten in der Datenquelle. In einem Objektkontext können Objekte geändert, erstellt und gelöscht werden. Der Objektkontext verwaltet Identitäten und Beziehungen zwischen Objekten. Darüber hinaus können Objekte serialisiert und Objekte an Steuerelemente gebunden werden. Weitere Informationen finden Sie unter Arbeiten mit Objekten (Entity Framework).

Im folgenden Beispiel des Schnellstarts wird eine Auflistung von mit einem Department-Objekt verbundenen Course-Objekten abgerufen und an ein DataGridView-Steuerelement gebunden.

' Get the object for the selected department.
Dim department As Department = _
    CType(Me.departmentList.SelectedItem, Department)

' Bind the grid view to the collection of Course objects 
' that are related to the selected Department object.
courseGridView.DataSource = department.Course
// Get the object for the selected department.
Department department = 
    (Department)this.departmentList.SelectedItem;

// Bind the grid view to the collection of Course objects 
// that are related to the selected Department object.
courseGridView.DataSource = department.Course;

Das Entity Framework verfolgt Änderungen an Entitätsdaten nach und ermöglicht die dauerhafte Speicherung von Änderungen in der Datenquelle. Im folgenden Beispiel des Schnellstarts werden Änderungen im Objektkontext in die Datenbank geschrieben.

' Save object changes to the database, display a message, 
' and refresh the form.
numChanges = schoolContext.SaveChanges()
// Save object changes to the database, display a message,
// and refresh the form.
numChanges = schoolContext.SaveChanges();

Weitere Informationen finden Sie unter Hinzufügen, Ändern und Löschen von Objekten (Entity Framework).

Ein EDM kann so definiert werden, dass gespeicherte Prozeduren verwendet werden, um Daten in der Datenquelle einzufügen, zu aktualisieren und zu löschen. Diese gespeicherten Prozeduren werden Entitäten im konzeptionellen Modell zugeordnet. Weitere Informationen finden Sie unter Unterstützung für gespeicherte Prozeduren (Entity Framework).

Siehe auch

Konzepte

LINQ to Entities-Beispiele
Entity Data Model-Typen
Entity Data Model-Beziehungen

Weitere Ressourcen

Object Services (Entity Framework)
Anwendungsszenarios (Entity Framework)