Delen via


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, Publisheren Author.

Example model with three entity types

In het volgende diagram ziet u twee entiteitssets (Books en) en Publisherseen 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.

Screenshot that shows a Sets example.

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>

Zie ook