Dela via


entitetsuppsättning

En entitetsuppsättning är en logisk container för instanser av en entitetstyp och instanser av alla typer som härleds från den entitetstypen. (Information om härledda typer finns i Entitetsdatamodell: Arv.) Relationen mellan en entitetstyp och en entitetsuppsättning motsvarar relationen mellan en rad och en tabell i en relationsdatabas: Precis som en rad beskriver en entitetstyp datastrukturen, och precis som en tabell innehåller en entitetsuppsättning instanser av en viss struktur. En entitetsuppsättning är inte en datamodelleringskonstruktion. Den beskriver inte datastrukturen. I stället tillhandahåller en entitetsuppsättning en konstruktion för en värd- eller lagringsmiljö (till exempel den vanliga språkkörningen eller en SQL Server-databas) för att gruppera entitetstypinstanser så att de kan mappas till ett datalager.

En entitetsuppsättning definieras i en entitetscontainer, vilket är en logisk gruppering av entitetsuppsättningar och associationsuppsättningar.

För att en entitetstypinstans ska finnas i en entitetsuppsättning måste följande vara sant:

  • Instanstypen är antingen samma som den entitetstyp som entitetsuppsättningen baseras på, eller så är instanstypen en undertyp av entitetstypen.

  • Entitetsnyckeln för instansen är unik i entitetsuppsättningen.

  • Instansen finns inte i någon annan entitetsuppsättning.

    Kommentar

    Flera entitetsuppsättningar kan definieras med samma entitetstyp, men en instans av en viss entitetstyp kan bara finnas i en entitetsuppsättning.

Du behöver inte definiera en entitetsuppsättning för varje entitetstyp i en konceptmodell.

Exempel

Diagrammet nedan visar en konceptmodell med tre entitetstyper: Book, Publisheroch Author.

Example model with three entity types

Följande diagram visar två entitetsuppsättningar (Books och Publishers) och en associationsuppsättning (PublishedBy) baserat på den konceptuella modell som visas ovan. Bi i entitetsuppsättningen Books representerar en instans av Book entitetstypen vid körning. På samma sätt representerar Pj en Publisher instans i entitetsuppsättningen Publishers . BiPj representerar en instans av associationen PublishedBy i associationsuppsättningen PublishedBy .

Screenshot that shows a Sets example.

ADO.NET Entity Framework använder ett domänspecifikt språk (DSL) som kallas CSDL (Conceptual Schema Definition Language) för att definiera konceptuella modeller. Följande CSDL definierar en entitetscontainer med en entitetsuppsättning för varje entitetstyp i den konceptuella modell som visas ovan. Observera att namn och entitetstyp för varje entitetsuppsättning definieras med hjälp av XML-attribut.

<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>

Det är möjligt att definiera flera entitetsuppsättningar per typ (MEST). Följande CSDL definierar en entitetscontainer med två entitetsuppsättningar för entitetstypen Book :

<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>

Se även