Udostępnij za pośrednictwem


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, Publisheri Author.

Example model with three entity types

Na poniższym diagramie przedstawiono dwa zestawy jednostek (Books i ) oraz Publisherszestaw 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ń.

Screenshot that shows a Sets example.

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>

Zobacz też