Übersicht über Entity FrameworkEntity Framework Overview

Entity FrameworkEntity Framework ist ein Satz von Technologien in ADO.NET, der die Entwicklung datenorientierter Softwareanwendungen unterstützt.The Entity FrameworkEntity Framework is a set of technologies in ADO.NET that support the development of data-oriented software applications. Architekten und Entwickler datenorientierter Anwendungen mussten zwei sehr verschiedene Ziele erreichen.Architects and developers of data-oriented applications have struggled with the need to achieve two very different objectives. Sie mussten die Entitäten, die Beziehungen und die Logik der zu lösenden Geschäftsprobleme modellieren und mit den zum Speichern und Abrufen von Daten verwendeten Datenmodulen arbeiten.They must model the entities, relationships, and logic of the business problems they are solving, and they must also work with the data engines used to store and retrieve the data. Die Daten können auf mehrere Speichersysteme verteilt sein, die jeweils über eigene Protokolle verfügen. Selbst Anwendungen, die mit nur einem Speichersystem arbeiten, müssen ein ausgewogenes Verhältnis zwischen den Anforderungen des Speichersystems und den Anforderungen beim Schreiben von effizientem und verwaltbarem Anwendungscode finden.The data may span multiple storage systems, each with its own protocols; even applications that work with a single storage system must balance the requirements of the storage system against the requirements of writing efficient and maintainable application code.

Mithilfe von Entity FrameworkEntity Framework können Entwickler mit Daten in der Form domänenspezifischer Objekte und Eigenschaften arbeiten, wie z. B. Kunden und Kundenadressen, ohne sich über die zugrunde liegenden Datenbanktabellen und -spalten Gedanken machen zu müssen, in denen diese Daten gespeichert sind.The Entity FrameworkEntity Framework enables developers to work with data in the form of domain-specific objects and properties, such as customers and customer addresses, without having to concern themselves with the underlying database tables and columns where this data is stored. Mit Entity FrameworkEntity Framework können Entwickler beim Umgang mit Daten auf einer höheren Abstraktionsebene arbeiten und mit weniger Code als in herkömmlichen Anwendungen datenorientierte Anwendungen erstellen und warten.With the Entity FrameworkEntity Framework, developers can work at a higher level of abstraction when they deal with data, and can create and maintain data-oriented applications with less code than in traditional applications. Da die Entity FrameworkEntity Framework ist eine Komponente von der .NET Framework.NET Framework, Entity FrameworkEntity Framework Anwendungen können auf jedem Computer, auf dem Ausführen der .NET Framework.NET Framework ab Version 3.5 SP1 ist installiert.Because the Entity FrameworkEntity Framework is a component of the .NET Framework.NET Framework, Entity FrameworkEntity Framework applications can run on any computer on which the .NET Framework.NET Framework starting with version 3.5 SP1 is installed.

Die folgenden Abschnitte in diesem Thema enthalten weitere Einzelheiten zu Entity FrameworkEntity Framework:The following sections in this topic provide more detail about the Entity FrameworkEntity Framework:

Modelle für den praktischen EinsatzGiving Life to Models

Ein seit langem befolgter und verbreiteter Entwurfsansatz beim Erstellen einer Anwendung oder eines Dienstes besteht darin, die Anwendung oder den Dienst in drei Teile aufzuspalten: in ein Domänenmodell, ein logisches Modell und ein physisches Modell.A longstanding and common design approach when building an application or service is the division of the application or service into three parts: a domain model, a logical model, and a physical model. Das Domänenmodell definiert die Entitäten und Beziehungen in dem zu modellierenden System.The domain model defines the entities and relationships in the system that is being modeled. Das logische Modell für eine relationale Datenbank normalisiert die Entitäten und Beziehungen in Tabellen mit Fremdschlüsseleinschränkungen.The logical model for a relational database normalizes the entities and relationships into tables with foreign key constraints. Das physische Modell bezieht sich auf die Funktionen eines bestimmten Datenmoduls und gibt die Speicherdetails, wie z. B. Partitionierung und Indizierung, an.The physical model addresses the capabilities of a particular data engine by specifying storage details such as partitioning and indexing.

Das physische Modell wird zur Steigerung der Leistung von Datenbankadministratoren verfeinert, während sich Programmierer, die Anwendungscode schreiben, in erster Linie auf die Arbeit mit dem logischen Modell beschränken, indem sie SQL-Abfragen schreiben und gespeicherte Prozeduren aufrufen.The physical model is refined by database administrators to improve performance, but programmers writing application code primarily confine themselves to working with the logical model by writing SQL queries and calling stored procedures. Domänenmodelle werden im Allgemeinen als Werkzeuge zum Erfassen und Kommunizieren der Anwendungsanforderungen, häufig als statische Diagramme, verwendet, die in einer frühen Projektphase betrachtet und diskutiert und dann abgelegt werden.Domain models are generally used as a tool for capturing and communicating the requirements of an application, frequently as inert diagrams that are viewed and discussed in the early stages of a project and then abandoned. Viele Entwicklungsteams lassen das Erstellen eines konzeptionellen Modells aus und beginnen, indem sie Tabellen, Spalten und Schlüssel in einer relationalen Datenbank festlegen.Many development teams skip creating a conceptual model and begin by specifying tables, columns, and keys in a relational database.

Die Entity FrameworkEntity Framework Lebensdauer auf Modelle mithilfe ermöglicht es Entwicklern, Abfragen von Entitäten und Beziehungen im Domänenmodell bietet (aufgerufen eine konzeptionelle im Modell der Entity FrameworkEntity Framework) während der vertrauenden Seite auf die Entity FrameworkEntity Framework übersetzen die Vorgänge zum datenquellenspezifischen Datenbefehle.The Entity FrameworkEntity Framework gives life to models by enabling developers to query entities and relationships in the domain model (called a conceptual model in the Entity FrameworkEntity Framework) while relying on the Entity FrameworkEntity Framework to translate those operations to data source–specific commands. Dadurch werden Anwendungen von hartcodierten Abhängigkeiten einer bestimmten Datenquelle befreit.This frees applications from hard-coded dependencies on a particular data source.

Bei Verwendung von Code First wird das konzeptionelle Modell dem Speichermodell im Code zugeordnet.When working with Code First, the conceptual model is mapped to the storage model in code. Entity FrameworkEntity Framework kann das konzeptionelle Modell auf Grundlage der Objekttypen und zusätzlichen Konfigurationen ableiten, die Sie definieren.The Entity FrameworkEntity Framework can infer the conceptual model based on the object types and additional configurations that you define. Die Zuordnungsmetadaten werden während der Laufzeit generiert und basieren auf einer Kombination daraus, wie Sie die Domänentypen definiert haben, sowie auf zusätzlichen Konfigurationsinformationen, die Sie im Code bereitstellen.The mapping metadata is generated during run time based on a combination of how you defined your domain types and additional configuration information that you provide in code. Entity FrameworkEntity Framework generiert die Datenbank nach Bedarf auf Grundlage der Metadaten. generates the database as needed based on the metadata. Weitere Informationen finden Sie unter erstellen und Zuordnen eines konzeptionellen Modells.For more information, see Creating and Mapping a Conceptual Model.

Bei der Arbeit mit den Entity Data Model-Tools werden das konzeptionelle Modell, das Speichermodell und die Zuordnungen zwischen beiden in XML-basierten Schemas ausgedrückt und in Dateien mit entsprechenden Namenserweiterungen definiert:When working with the Entity Data Model Tools, the conceptual model, the storage model, and the mappings between the two are expressed in XML-based schemas and defined in files that have corresponding name extensions:

  • Die konzeptionelle Schemadefinitionssprache (Conceptual Schema Definition Language, CSDL) definiert das konzeptionelle Modell.Conceptual schema definition language (CSDL) defines the conceptual model. CSDL ist die Entity FrameworkEntity Frameworkder Implementierung der Entity Data Model.CSDL is the Entity FrameworkEntity Framework's implementation of the Entity Data Model. Die Dateierweiterung ist CSDL.The file extension is .csdl.

  • Die Datenspeicherschema-Definitionssprache (Store Schema Definition Language, SSDL) definiert das Speichermodell, das auch als logisches Modell bezeichnet wird.Store schema definition language (SSDL) defines the storage model, which is also called the logical model. Die Dateierweiterung ist SSDL.The file extension is .ssdl.

  • Die Mapping-Spezifikationssprache (Mapping Specification Language, MSL) definiert die Zuordnungen zwischen Speichermodell und konzeptionellem Modell.Mapping specification language (MSL) defines the mappings between the storage and conceptual models. Die Dateierweiterung ist MSL.The file extension is .msl.

Das Speichermodell und die Zuordnungen können sich bei Bedarf ändern, ohne dass Änderungen am konzeptionellen Modell, den Datenklassen oder dem Anwendungscode erforderlich werden.The storage model and mappings can change as needed without requiring changes to the conceptual model, data classes, or application code. Da Speichermodelle anbieterspezifisch sind, können Sie mit einem konsistenten konzeptionellen Modell bei verschiedenen Datenquellen arbeiten.Because storage models are provider-specific, you can work with a consistent conceptual model across various data sources.

Die Entity FrameworkEntity Framework verwendet diese Modell- und Zuordnungsdateien zu erstellen, lesen, aktualisieren und Löschen von Vorgängen für Entitäten und Beziehungen im konzeptionellen Modell in entsprechende Vorgänge in der Datenquelle.The Entity FrameworkEntity Framework uses these model and mapping files to create, read, update, and delete operations against entities and relationships in the conceptual model to equivalent operations in the data source. Die Entity FrameworkEntity Framework selbst Zuordnen von Entitäten im konzeptionellen Modell zu gespeicherten Prozeduren in der Datenquelle unterstützt.The Entity FrameworkEntity Framework even supports mapping entities in the conceptual model to stored procedures in the data source. Weitere Informationen finden Sie unter CSDL, SSDL- und MSL-Spezifikationen.For more information, see CSDL, SSDL, and MSL Specifications.

Mapping von Objekten zu DatenMapping Objects to Data

Die objektorientierte Programmierung stellt eine Herausforderung für die Interaktion mit Datenspeichersystemen dar.Object-oriented programming poses a challenge for interacting with data storage systems. Obwohl die Organisation der Klassen häufig den Aufbau relationaler Datenbanktabellen sehr genau widerspiegelt, passen diese Strukturen nicht perfekt zusammen.Although the organization of classes frequently mirrors the organization of relational database tables, the fit is not perfect. Häufig entsprechen mehrere normalisierte Tabellen einer einzigen Klasse, und Beziehungen zwischen Klassen werden oft anders dargestellt als Beziehungen zwischen Tabellen.Multiple normalized tables frequently correspond to a single class, and relationships between classes are often represented differently than relationships between tables are represented. Um beispielsweise den Kunden für einen Auftrag darzustellen, verwendet die Order-Klasse möglicherweise eine Eigenschaft, die einen Verweis auf eine Instanz einer Customer-Klasse enthält, während eine Zeile in der Order-Tabelle in einer Datenbank jedoch eine Fremdschlüsselspalte (oder mehrere Spalten als Fremdschlüssel) mit einem Wert enthält, der einem Primärschlüsselwert in der Customer-Tabelle entspricht.For example, to represent the customer for a sales order, an Order class might use a property that contains a reference to an instance of a Customer class, while an Order table row in a database contains a foreign key column (or set of columns) with a value that corresponds to a primary key value in the Customer table. Eine Customer-Klasse kann über eine Eigenschaft mit dem Namen Orders verfügen, die eine Auflistung von Instanzen der Order-Klasse enthält, während die Customer-Tabelle in einer Datenbank nicht über eine vergleichbare Spalte verfügt.A Customer class might have a property named Orders that contains a collection of instances of the Order class, while the Customer table in a database has no comparable column. Entity FrameworkEntity Framework bietet Entwicklern die Flexibilität, Beziehungen entweder auf diese Weise darzustellen oder sie so zu modellieren, wie diese Beziehungen in der Datenbank dargestellt sind.The Entity FrameworkEntity Framework provides developers with the flexibility to represent relationships in this way, or to more closely model relationships as they are represented in the database.

Vorhandene Lösungen haben versucht, diese Lücke, oft als "Impedance Mismatch" bezeichnet, zu füllen, indem nur objektorientierte Klassen und Eigenschaften relationalen Tabellen und Spalten zugeordnet wurden.Existing solutions have tried to bridge this gap, which is frequently called an "impedance mismatch", by only mapping object-oriented classes and properties to relational tables and columns. Statt diesen herkömmlichen Ansatz, der Entity FrameworkEntity Framework relationalen Tabellen, Spalten und fremdschlüsseleinschränkungen in logischen Modellen den Entitäten und Beziehungen in konzeptionellen Modellen zugeordnet.Instead of taking this traditional approach, the Entity FrameworkEntity Framework maps relational tables, columns, and foreign key constraints in logical models to entities and relationships in conceptual models. Dadurch wird sowohl die Definition von Objekten als auch die Optimierung des logischen Modells viel flexibler.This enables greater flexibility both in defining objects and optimizing the logical model. Die Entity Data ModelEntity Data Model-Tools generieren erweiterbare Datenklassen auf der Grundlage des konzeptionellen Modells.The Entity Data ModelEntity Data Model tools generate extensible data classes based on the conceptual model. Diese Klassen sind partielle Klassen, die mit zusätzlichen, vom Entwickler hinzuzufügenden Membern erweitert werden können.These classes are partial classes that can be extended with additional members that the developer adds. Die für ein bestimmtes konzeptionelles Modell erzeugten Klassen werden standardmäßig von Basisklassen abgeleitet, die Dienste zur Umsetzung von Entitäten in Objekte und zum Nachverfolgen und Speichern von Änderungen zur Verfügung stellen.By default, the classes that are generated for a particular conceptual model derive from base classes that provide services for materializing entities as objects and for tracking and saving changes. Entwickler können diese Klassen verwenden, um die Entitäten und Beziehungen als Objekte zu behandeln, die durch Zuordnungen verknüpft sind.Developers can use these classes to work with the entities and relationships as objects related by associations. Entwickler können die für ein konzeptionelles Modell generierten Klassen auch anpassen.Developers can also customize the classes that are generated for a conceptual model. Weitere Informationen finden Sie unter arbeiten mit Objekten.For more information, see Working with Objects.

Zugreifen auf und Ändern von EntitätsdatenAccessing and Changing Entity Data

Entity FrameworkEntity Framework ist mehr als nur eine weitere objektrelationale Mappinglösung. Es dient im Wesentlichen dazu, Anwendungen den Zugriff auf und die Änderung von Daten zu ermöglichen, die als Entitäten und Beziehungen im konzeptionellen Modell dargestellt werden.More than just another object-relational mapping solution, the Entity FrameworkEntity Framework is fundamentally about enabling applications to access and change data that is represented as entities and relationships in the conceptual model. Entity FrameworkEntity Framework verwendet die Informationen in den Modell- und Zuordnungsdateien, um Objektabfragen von Entitätstypen, die im konzeptionellen Modell dargestellt werden, in datenquellenspezifische Abfragen zu übersetzen.The Entity FrameworkEntity Framework uses information in the model and mapping files to translate object queries against entity types represented in the conceptual model into data source-specific queries. Abfrageergebnisse in Objekte materialisiert werden, die die Entity FrameworkEntity Framework verwaltet.Query results are materialized into objects that the Entity FrameworkEntity Framework manages. Die Entity FrameworkEntity Framework bietet die folgenden Möglichkeiten, ein konzeptionelles Modell abzufragen und Objekte zurückzugeben:The Entity FrameworkEntity Framework provides the following ways to query a conceptual model and return objects:

  • LINQ to EntitiesLINQ to Entities Bietet Language-Integrated Query (LINQ)-Unterstützung für Abfragen von Entitätstypen, die in einem konzeptionellen Modell definiert sind.Provides Language-Integrated Query (LINQ) support for querying entity types that are defined in a conceptual model. Weitere Informationen finden Sie unter LINQ to Entities.For more information, see LINQ to Entities.

  • Entity SQLEntity SQL Ein speicherunabhängiger Dialekt von SQL Server, die direkt mit Entitäten im konzeptionellen Modell arbeitet und unterstützt Entity Data ModelEntity Data Model Konzepte.A storage-independent dialect of SQL that works directly with entities in the conceptual model and that supports Entity Data ModelEntity Data Model concepts. Entity SQLEntity SQL wird verwendet, mit Objektabfragen und Abfragen, die mit dem EntityClient-Anbieter ausgeführt werden. is used both with object queries and queries that are executed by using the EntityClient provider. Weitere Informationen finden Sie unter Übersicht über Entity SQL.For more information, see Entity SQL Overview.

Entity FrameworkEntity Framework enthält den EntityClient-Datenanbieter.The Entity FrameworkEntity Framework includes the EntityClient data provider. Dieser Anbieter verwaltet Verbindungen, übersetzt Entitätsabfragen in datenquellenspezifische Abfragen und gibt einen Datenleser zurück, mit dem Entity FrameworkEntity Framework Entitätsdaten in Objekte umsetzt.This provider manages connections, translates entity queries into data source-specific queries, and returns a data reader that the Entity FrameworkEntity Framework uses to materialize entity data into objects. Bei der Objektmaterialisierung nicht erforderlich ist, der EntityClient-Anbieter kann auch verwendet werden wie ein ADO.NETADO.NET Datenanbieter, indem er Anwendungen das Ausführen Entity SQLEntity SQL abgefragt und den Reader zurückgegebene schreibgeschützte Daten nutzen.When object materialization is not required, the EntityClient provider can also be used like a standard ADO.NETADO.NET data provider by enabling applications to execute Entity SQLEntity SQL queries and consume the returned read-only data reader. Weitere Informationen finden Sie unter EntityClient-Anbieter für Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

Das folgende Diagramm illustriert die Entity FrameworkEntity Framework-Architektur für den Datenzugriff:The following diagram illustrates the Entity FrameworkEntity Framework architecture for accessing data:

Entity Framework-ArchitekturdiagrammEntity Framework Architectural Diagram

Die Entity Data ModelEntity Data Model-Tools können eine von System.Data.Objects.ObjectContext oder System.Data.Entity.DbContext abgeleitete Klasse generieren, die den Entitätencontainer im konzeptionellen Modell darstellt.The Entity Data ModelEntity Data Model Tools can generate a class derived from System.Data.Objects.ObjectContext or System.Data.Entity.DbContext that represents the entity container in the conceptual model. Dieser Objektkontext stellt die Funktionen zum Nachverfolgen von Änderungen und zum Verwalten von Identitäten, Parallelität und Beziehungen bereit.This object context provides the facilities for tracking changes and managing identities, concurrency, and relationships. Diese Klasse macht auch eine SaveChanges-Methode verfügbar, die Einfügungen, Aktualisierungen und Löschungen in die Datenquelle schreibt.This class also exposes a SaveChanges method that writes inserts, updates, and deletes to the data source. Diese Änderungen werden wie bei Abfragen entweder durch automatisch vom System generierte Befehle oder durch vom Entwickler angegebene gespeicherte Prozeduren vorgenommen.Like queries, these changes are either made by commands automatically generated by the system or by stored procedures that are specified by the developer.

DatenanbieterData Providers

Der EntityClient-Anbieter erweitert das ADO.NETADO.NET-Anbietermodell, indem auf Daten im Sinne von konzeptionellen Entitäten und Beziehungen zugegriffen wird.The EntityClient provider extends the ADO.NETADO.NET provider model by accessing data in terms of conceptual entities and relationships. Es führt Abfragen aus, die Entity SQLEntity SQL verwenden.It executes queries that use Entity SQLEntity SQL. Entity SQLEntity SQL stellt die zugrunde liegende Abfragesprache bereit, die EntityClient ermöglicht, mit der Datenbank zu kommunizieren. provides the underlying query language that enables EntityClient to communicate with the database. Weitere Informationen finden Sie unter EntityClient-Anbieter für Entity Framework.For more information, see EntityClient Provider for the Entity Framework.

Entity FrameworkEntity Framework enthält einen aktualisierten SqlClient-Datenanbieter, der kanonische Befehlsstrukturen unterstützt.The Entity FrameworkEntity Framework includes an updated SqlClient Data Provider that supports canonical command trees. Weitere Informationen finden Sie unter SqlClient für Entity Framework.For more information, see SqlClient for the Entity Framework.

Entity Data Model-ToolsEntity Data Model Tools

Zusammen mit der Entity FrameworkEntity Framework-Laufzeit schließt Visual Studio 2012Visual Studio 2012 die Zuordnungs- und Modellierungstools ein.Together with the Entity FrameworkEntity Framework runtime, the Visual Studio 2012Visual Studio 2012 includes the mapping and modeling tools. Weitere Informationen finden Sie unter modellieren und Zuordnen von.For more information, see Modeling and Mapping.

Weitere InformationenLearning More

Anhand der folgenden Themen können Sie mehr über Entity FrameworkEntity Framework erfahren:The following topics enable you to learn more about the Entity FrameworkEntity Framework:

Erste SchritteGetting Started
Geben Sie Informationen zum Einrichten und Ausführen von schnell mithilfe der Schnellstart, die zeigt, wie eine einfache Entity FrameworkEntity Framework Anwendung.Provide information about how to get up and running quickly using the Quickstart, which shows how to create a simple Entity FrameworkEntity Framework application.

Entity Framework-TerminologieEntity Framework Terminology
Hier werden viele der durch das Entity Data Model und Entity FrameworkEntity Framework eingeführten und in der Entity FrameworkEntity Framework-Dokumentation verwendeten Begriffe definiert.Defines many of the terms that are introduced by the Entity Data Model and the Entity FrameworkEntity Framework and that are used in Entity FrameworkEntity Framework documentation.

Entity Framework-RessourcenEntity Framework Resources
Hier werden Links zu konzeptionellen Themen und externen Themen und Ressourcen für das Erstellen von Entity FrameworkEntity Framework-Anwendungen bereitgestellt.Provides links to conceptual topics and links to external topics and resources for building Entity FrameworkEntity Framework applications.

Siehe auchSee Also

ADO.NET Entity FrameworkADO.NET Entity Framework