koppelingsset
Een koppelingsset is een logische container voor koppelingsexemplaren van hetzelfde type. Een koppelingsset is geen gegevensmodelleringsconstructie; Dat wil gezegd, het beschrijft niet de structuur van gegevens of relaties. In plaats daarvan biedt een koppelingsset een constructie voor een hosting- of opslagomgeving (zoals de algemene taalruntime of een SQL Server-database) om koppelingsexemplaren te groeperen, zodat deze kunnen worden toegewezen aan een gegevensarchief.
Een koppelingsset wordt gedefinieerd in een entiteitscontainer. Dit is een logische groepering van entiteitssets en koppelingssets .
Een definitie voor een koppelingsset bevat de volgende informatie:
De naam van de koppelingsset. (Verplicht)
De koppeling waarvan deze exemplaren bevat. (Verplicht)
Twee koppelingssets eindigen.
Opmerking
In het onderstaande diagram ziet u een conceptueel model met twee koppelingen: PublishedBy
, en WrittenBy
. Hoewel informatie over koppelingssets niet wordt overgebracht in het diagram, ziet u in het volgende diagram een voorbeeld van koppelingssets en entiteitssets op basis van dit model.
In het volgende voorbeeld ziet u een koppelingsset (PublishedBy
) en twee entiteitssets (Books
en Publishers
) op basis van het conceptuele model dat hierboven wordt weergegeven. Bi in de Books
entiteitsset vertegenwoordigt een exemplaar van het Book
entiteitstype tijdens runtime. Op dezelfde manier vertegenwoordigt Pj een Publisher
exemplaar in de Publishers
entiteitsset. BiPj vertegenwoordigt een exemplaar van de PublishedBy
koppeling in de PublishedBy
koppelingsset.
De ADO.NET Entity Framework maakt gebruik van een domeinspecifieke taal (DSL) genaamd conceptuele schemadefinitietaal (CSDL) om conceptuele modellen te definiëren. De volgende CSDL definieert een entiteitscontainer met één koppelingsset voor elke koppeling in het bovenstaande diagram. Houd er rekening mee dat de naam en koppeling voor elke koppelingsset worden gedefinieerd met behulp van XML-kenmerken.
<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>
Het is mogelijk om meerdere koppelingssets per koppeling te definiëren, zolang geen twee koppelingssets een einde van een koppelingsset delen. De volgende CSDL definieert een entiteitscontainer met twee koppelingssets voor de WrittenBy
koppeling. U ziet dat er meerdere entiteitssets zijn gedefinieerd voor de Book
entiteitstypen en Author
dat geen koppelingsset een einde van een koppelingsset deelt.
<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>