Dela via


association set

En associationsuppsättning är en logisk container för associationsinstanser av samma typ. En associationsuppsättning är inte en datamodelleringskonstruktion. Det innebär att den inte beskriver strukturen för data eller relationer. I stället tillhandahåller en associationsuppsättning en konstruktion för en värd- eller lagringsmiljö (till exempel common language runtime eller en SQL Server-databas) för att gruppera associationsinstanser så att de kan mappas till ett datalager.

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

En definition för en associationsuppsättning innehåller följande information:

Exempel

Diagrammet nedan visar en konceptmodell med två associationer: PublishedBy, och WrittenBy. Även om information om associationuppsättningar inte förmedlas i diagrammet, visar nästa diagram ett exempel på associationsuppsättningar och entitetsuppsättningar baserat på den här modellen.

Example model with three entity types

I följande exempel visas en associationsuppsättning (PublishedBy) och två entitetsuppsättningar (Books och Publishers) 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 associationsuppsättning för varje association i diagrammet ovan. Observera att namnet och associationen för varje associationsuppsä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 går att definiera flera associationsuppsättningar per association, så länge inga två associationuppsättningar delar en associationuppsättningsslutpunkt. Följande CSDL definierar en entitetscontainer med två associationuppsättningar för associationen WrittenBy . Observera att flera entitetsuppsättningar har definierats för entitetstyperna Book och Author att ingen associationsuppsättning delar en associationsuppsättningsslut.

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

Se även