Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 strukturę dla środowiska hostingu lub przechowywania danych (na przykład środowiska uruchomieniowego języka ogó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 instancja typu jednostki mogła występować w zestawie jednostek, muszą zostać spełnione następujące warunki:
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 / Notatka
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, Publisheri Author.
Na poniższym diagramie przedstawiono dwa zestawy bytów (Books i Publishers) oraz zestaw skojarzeń (PublishedBy) na podstawie powyższego modelu koncepcyjnego. Bi w zbiorze encji Books reprezentuje wystąpienie typu encji Book w trakcie działania. 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>