Arbeiten mit Entitätsdaten
Entity Framework kompiliert das konzeptionelle Modell und die Speichermodellmetadaten zusammen mit den Zuordnungen 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 konzeptionellen Modells ausgeführt wird.
Entity Framework baut auf speicherspezifischen ADO.NET-Datenanbietern auf, indem es einem zugrunde liegenden Datenanbieter und einer Datenquelle 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:
Abfragen von Objekten
Die ADO.NET Entity Data Model-Tools generieren eine von ObjectContext abgeleitete Klasse, die den im konzeptionellen Modell definierten Entitätencontainer darstellt. Die ObjectContext-Klasse unterstützt Abfragen für ein konzeptionelles Modell, die Entitäten als Objekte zurückgeben, sowie das Erstellen, Aktualisieren und Löschen von Entitätsobjekten. Entity Framework unterstützt Objektabfragen für ein konzeptionelles Modell. 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. Ist die LazyLoadingEnabled-Eigenschaft von ObjectContext auf false festgelegt, werden Objekte nicht automatisch geladen, und Sie müssen die Load-Methode für den Entitätsverweis aufrufen, um die Daten des verbundenen Objekts in den Objektkontext zu laden.
Hinweis: |
---|
Wenn Sie den Entity Data Model Designer verwendet haben, um den Objektebenencode zu generieren, dann ist die LazyLoadingEnabled-Eigenschaft der ObjectContext-Klasse standardmäßig auf true festgelegt. |
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 eines konzeptionellen Modells (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 ORDER BY-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) = _
From d In schoolContext.Departments.Include("Courses") _
Order By d.Name _
Select d
// Define a query that returns all Department
// objects and course objects, ordered by name.
var departmentQuery = from d in schoolContext.Departments.Include("Courses")
orderby d.Name
select d;
Weitere Informationen finden Sie unter Abfragen eines konzeptionellen Modells (Entity Framework).
Sie können einen Satz von Modellen definieren, der gespeicherte Prozeduren verwendet, um Abfragen in der Datenquelle auszuführen. Die Resultsets dieser gespeicherten Prozeduren werden Entitäten im konzeptionellen Modell zugeordnet. Weitere Informationen finden Sie unter How to: Import a Stored Procedure.
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.Courses
//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.Courses;
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.
schoolContext.SaveChanges()
Weitere Informationen finden Sie unter Erstellen, Hinzufügen, Ändern und Löschen von Objekten (Entity Framework).
Sie können ein konzeptionelles Modell definieren werden, das gespeicherte Prozeduren verwendet, 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 Walkthrough: Mapping an Entity to Stored Procedures.
Siehe auch
Konzepte
Arbeiten mit Objekten (Entity Framework)
Abfragen in LINQ to Entities