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.
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
, Publisher
a Author
.
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í.
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>