zestaw jednostek
Zestaw jednostek jest kontenerem logicznym dla wystąpień typu jednostki i wystąpień dowolnego typu pochodzącego z tego typu jednostki. (Aby uzyskać informacje o typach pochodnych, zobacz Model danych jednostki: dziedziczenie). Relacja między typem jednostki a zestawem jednostek jest analogiczna do relacji między wierszem a tabelą w relacyjnej bazie danych: Podobnie jak wiersz, typ jednostki opisuje strukturę danych i, podobnie jak tabela, zestaw jednostek zawiera wystąpienia danej struktury. Zestaw jednostek nie jest konstrukcją modelowania danych; nie opisuje struktury danych. Zamiast tego zestaw jednostek udostępnia konstrukcję dla środowiska hostingu lub magazynu (na przykład środowiska uruchomieniowego języka wspólnego lub bazy danych programu SQL Server) w celu grupowania wystąpień typu jednostek, aby można je było mapować na magazyn danych.
Zestaw jednostek jest definiowany w kontenerze jednostki, który jest logicznym grupowaniem zestawów jednostek i zestawów skojarzeń.
Aby wystąpienie typu jednostki istniało w zestawie jednostek, musi mieć wartość true:
Typ wystąpienia jest taki sam jak typ jednostki, na którym jest oparty zestaw jednostek, lub typ wystąpienia jest podtypem typu jednostki.
Klucz jednostki dla wystąpienia jest unikatowy w zestawie jednostek.
Wystąpienie nie istnieje w żadnym innym zestawie jednostek.
Uwaga
Wiele zestawów jednostek można zdefiniować przy użyciu tego samego typu jednostki, ale wystąpienie danego typu jednostki może istnieć tylko w jednym zestawie jednostek.
Nie trzeba definiować zestawu jednostek dla każdego typu jednostki w modelu koncepcyjnym.
Przykład
Na poniższym diagramie przedstawiono model koncepcyjny z trzema typami jednostek: Book
, Publisher
i Author
.
Na poniższym diagramie przedstawiono dwa zestawy jednostek (Books
i ) oraz Publishers
zestaw skojarzeń (PublishedBy
) na podstawie przedstawionego powyżej modelu koncepcyjnego. Analiza bi w Books
zestawie jednostek reprezentuje wystąpienie Book
typu jednostki w czasie wykonywania. Podobnie Pj reprezentuje Publisher
wystąpienie w Publishers
zestawie jednostek. BiPj reprezentuje wystąpienie skojarzenia PublishedBy
w PublishedBy
zestawie skojarzeń.
ADO.NET Entity Framework używa języka specyficznego dla domeny (DSL) nazywanego koncepcyjnym językiem definicji schematu (CSDL) do definiowania modeli koncepcyjnych. Poniższy plik CSDL definiuje kontener jednostki z jednym zestawem jednostek dla każdego typu jednostki w modelu koncepcyjnym przedstawionym powyżej. Należy pamiętać, że nazwa i typ jednostki dla każdego zestawu jednostek są definiowane przy użyciu atrybutów 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>
Istnieje możliwość zdefiniowania wielu zestawów jednostek na typ (MEST). Poniższy plik CSDL definiuje kontener jednostki z dwoma zestawami jednostek dla Book
typu jednostki:
<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>