entiteitsset
Een entiteitsset is een logische container voor exemplaren van een entiteitstype en exemplaren van elk type dat is afgeleid van dat entiteitstype. (Zie voor informatie over afgeleide typen Entiteitsgegevensmodel: overname.) De relatie tussen een entiteitstype en een entiteitsset is vergelijkbaar met de relatie tussen een rij en een tabel in een relationele database: Net als een rij beschrijft een entiteitstype de gegevensstructuur en, zoals een tabel, bevat een entiteitsset exemplaren van een bepaalde structuur. Een entiteitsset is geen gegevensmodelleringsconstructie; de structuur van gegevens wordt niet beschreven. In plaats daarvan biedt een entiteitsset een constructie voor een hosting- of opslagomgeving (zoals de algemene taalruntime of een SQL Server-database) om entiteitstypeexemplaren te groeperen, zodat deze kunnen worden toegewezen aan een gegevensarchief.
Een entiteitsset wordt gedefinieerd in een entiteitscontainer. Dit is een logische groepering van entiteitssets en koppelingssets.
Als een exemplaar van het entiteitstype in een entiteitsset moet bestaan, moet het volgende waar zijn:
Het type van het exemplaar is hetzelfde als het entiteitstype waarop de entiteitsset is gebaseerd, of het type van het exemplaar is een subtype van het entiteitstype.
De entiteitssleutel voor het exemplaar is uniek binnen de entiteitsset.
Het exemplaar bestaat niet in een andere entiteitsset.
Notitie
Er kunnen meerdere entiteitssets worden gedefinieerd met hetzelfde entiteitstype, maar een exemplaar van een bepaald entiteitstype kan slechts in één entiteitsset bestaan.
U hoeft geen entiteitsset te definiëren voor elk entiteitstype in een conceptueel model.
Opmerking
In het onderstaande diagram ziet u een conceptueel model met drie entiteitstypen: Book
, Publisher
en Author
.
In het volgende diagram ziet u twee entiteitssets (Books
en) en Publishers
een koppelingsset (PublishedBy
) 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 entiteitsset voor elk entiteitstype in het conceptuele model dat hierboven wordt weergegeven. Houd er rekening mee dat de naam en het entiteitstype voor elke entiteitsset 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 entiteitssets per type (MEST) te definiëren. De volgende CSDL definieert een entiteitscontainer met twee entiteitssets voor het Book
entiteitstype:
<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" />
<AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
<End Role="Book" EntitySet="Books" />
<End Role="Publisher" EntitySet="Publishers" />
</AssociationSet>
<AssociationSet Name="BookAuthor" Association="BooksModel.BookAuthor">
<End Role="Book" EntitySet="Books" />
<End Role="Author" EntitySet="Authors" />
</AssociationSet>
</EntityContainer>