Zuordnungssatz
Ein Zuordnungssatz ist ein logischer Container für Zuordnungsinstanzen des gleichen Typs. Ein Zuordnungssatz ist keine Datenmodellkonstruktion; das heißt, er beschreibt nicht die Struktur von Daten oder Beziehungen. Vielmehr stellt ein Zuordnungssatz eine Konstruktion für eine Hosting- oder Speicherumgebung (z. B. die Common Language Runtime oder eine SQL Server-Datenbank) zum Gruppieren von Zuordnungsinstanzen bereit, damit diese einem Datenspeicher zugeordnet werden können.
Ein Zuordnungssatz wird innerhalb eines Entitätscontainers definiert, einer logischen Gruppierung von Entitätenmengen und Zuordnungssätzen.
Eine Definition für einen Zuordnungssatz enthält die folgenden Informationen:
Den Namen des Zuordnungssatzes. (Erforderlich)
Die Zuordnung, von der er Instanzen enthält. (Erforderlich)
Zwei Zuordnungssatzenden.
Beispiel
Die unten stehende Abbildung zeigt ein konzeptionelles Modell mit zwei Zuordnungen: PublishedBy
und WrittenBy
. Obwohl die Abbildung keine Informationen zu Zuordnungssätzen bereitstellt, zeigt die nächste Abbildung ein Beispiel für Zuordnungssätze und Entitätenmengen auf Grundlage dieses Modells.
Das folgende Beispiel zeigt einen Zuordnungssatz (PublishedBy
) und zwei Entitätenmengen (Books
und Publishers
), basierend auf dem oben gezeigten Modell. Bi in der Books
-Entitätenmenge stellt eine Instanz des Entitätstyps Book
zur Laufzeit dar. Ebenso stellt Pj eine Publisher
-Instanz in der Entitätenmenge Publishers
dar. BiPj stellt eine Instanz der PublishedBy
-Zuordnung im PublishedBy
-Zuordnungssatz dar.
Das ADO.NET Entity Framework verwendet eine domänenspezifische Sprache (DSL) mit der Bezeichnung „konzeptionelle Schemadefinitionssprache“ (CSDL), um konzeptionelle Modelle zu definieren. Die folgende CSDL definiert einen Entitätscontainer mit einem Zuordnungssatz für jede Zuordnung in der oben gezeigten Abbildung. Beachten Sie, dass der Name und die Zuordnung für jeden Zuordnungssatz mit XML-Attributen definiert werden.
<EntityContainer Name="BooksContainer" >
<EntitySet Name="Books" EntityType="BooksModel.Book" />
<EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
<EntitySet Name="Authors" EntityType="BooksModel.Author" />
<AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
<End Role="Book" EntitySet="Books" />
<End Role="Publisher" EntitySet="Publishers" />
</AssociationSet>
<AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
<End Role="Book" EntitySet="Books" />
<End Role="Author" EntitySet="Authors" />
</AssociationSet>
</EntityContainer>
Es ist möglich, mehrere Zuordnungssätze pro Zuordnung zu definieren, solange sich nicht zwei Zuordnungssätze ein Zuordnungssatzende teilen. Die folgende CSDL definiert einen Entitätscontainer mit zwei Zuordnungssätzen für die WrittenBy
-Zuordnung. Beachten Sie, dass mehrere Entitätssätze für die Entitätstypen Book
und Author
definiert wurden, und dass sich kein Zuordnungssatz ein Zuordnungssatzende teilt.
<EntityContainer Name="BooksContainer" >
<EntitySet Name="Books" EntityType="BooksModel.Book" />
<EntitySet Name="FictionBooks" EntityType="BooksModel.Book" />
<EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
<EntitySet Name="Authors" EntityType="BooksModel.Author" />
<EntitySet Name="FictionAuthors" EntityType="BooksModel.Author" />
<AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
<End Role="Book" EntitySet="Books" />
<End Role="Publisher" EntitySet="Publishers" />
</AssociationSet>
<AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
<End Role="Book" EntitySet="Books" />
<End Role="Author" EntitySet="Authors" />
</AssociationSet>
<AssociationSet Name="FictionWrittenBy" Association="BooksModel.WrittenBy">
<End Role="Book" EntitySet="FictionBooks" />
<End Role="Author" EntitySet="FictionAuthors" />
</AssociationSet>
</EntityContainer>