Sdílet prostřednictvím


entity set

Sada entit je logický kontejner pro instance typu entity a instance libovolného typu odvozeného z tohoto typu entity. (Informace o odvozenýchtypech Entity Data Model: Dědičnost.) Relace mezi typem entity a sadou entit je podobná relaci mezi řádkem a tabulkou v relační databázi: Podobně jako řádek popisuje datový typ entity a podobně jako tabulka sada entit obsahuje instance dané struktury. Sada entit není konstruktor modelování dat; nepopisuje strukturu dat. Sada entit místo toho poskytuje konstruktor pro hostování nebo prostředí úložiště (například modul CLR nebo databázi SQL Serveru) pro seskupení instancí typu entity, aby je bylo možné mapovat na úložiště dat.

Sada entit je definována v kontejneru entit, což je logické seskupení sad entit a sad přidružení.

Aby instance typu entity existovala v sadě entit, musí být splněné následující podmínky:

  • Typ instance je buď stejný jako typ entity, na kterém je sada entit založena, nebo typ instance je podtyp typu entity.

  • Klíč entity pro instanci je jedinečný v rámci sady entit.

  • Instance neexistuje v žádné jiné sadě entit.

    Poznámka:

    Pomocí stejného typu entity lze definovat více sad entit, ale instance daného typu entity může existovat pouze v jedné sadě entit.

Nemusíte definovat sadu entit pro každý typ entity v konceptuálním modelu.

Příklad

Následující diagram znázorňuje koncepční model se třemi typy entit: Book, Publishera Author.

Example model with three entity types

Následující diagram znázorňuje dvě sady entit (Books a Publishers) a sadu přidružení (PublishedBy) založenou na konceptuálním modelu uvedeném výše. Bi v Books sadě entit představuje instanci Book typu entity za běhu. Podobně Pj představuje Publisher instanci v Publishers sadě entit. BiPj představuje instanci PublishedBy přidružení v PublishedBy sadě přidružení.

Screenshot that shows a Sets example.

ADO.NET Entity Framework používá jazyk specifický pro doménu (DSL) označovaný jako jazyk CSDL (Conceptual Schema Definition Language) k definování konceptuálních modelů. Následující CSDL definuje kontejner entit s jednou sadou entit pro každý typ entity v konceptuálním modelu uvedeném výše. Všimněte si, že název a typ entity pro každou sadu entit jsou definovány pomocí atributů XML.

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

Je možné definovat více sad entit na typ (MEST). Následující csDL definuje kontejner entit se dvěma sadami entit pro Book typ entity:

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

Viz také