zestaw skojarzeń
Zestaw skojarzeń jest kontenerem logicznym dla wystąpień skojarzeń tego samego typu. Zestaw skojarzeń nie jest konstrukcją modelowania danych; oznacza to, że nie opisuje struktury danych ani relacji. Zamiast tego zestaw skojarzeń udostępnia konstrukcję dla środowiska hostingu lub magazynu (takiego jak środowisko uruchomieniowe języka wspólnego lub baza danych programu SQL Server) w celu grupowania wystąpień skojarzeń, aby można je było mapować na magazyn danych.
Zestaw skojarzeń jest definiowany w kontenerze jednostki, który jest logicznym grupowaniem zestawów jednostek i zestawów skojarzeń.
Definicja zestawu skojarzeń zawiera następujące informacje:
Nazwa zestawu skojarzeń. (Wymagane)
Skojarzenie, którego będzie zawierać wystąpienia. (Wymagane)
Kończy się dwa zestawy skojarzeń.
Przykład
Na poniższym diagramie przedstawiono model koncepcyjny z dwoma skojarzeniami: PublishedBy
, i WrittenBy
. Chociaż informacje o zestawach skojarzeń nie są przekazywane na diagramie, następny diagram przedstawia przykład zestawów skojarzeń i zestawów jednostek opartych na tym modelu.
W poniższym przykładzie przedstawiono zestaw skojarzeń (PublishedBy
) i dwa zestawy jednostek (Books
i Publishers
) 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 skojarzeń dla każdego skojarzenia na powyższym diagramie. Należy pamiętać, że nazwa i skojarzenie dla każdego zestawu skojarzeń 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 skojarzeń na skojarzenie, o ile nie ma dwóch zestawów skojarzeń, które współużytkują koniec zestawu skojarzeń. Poniższy plik CSDL definiuje kontener jednostki z dwoma zestawami skojarzeń dla skojarzenia WrittenBy
. Zwróć uwagę, że dla typów jednostek i Author
zdefiniowano Book
wiele zestawów jednostek i i że żaden zestaw skojarzeń nie udostępnia końca zestawu skojarzeń.
<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" />
<EntitySet Name="FictionAuthors" 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>
<AssociationSet Name="FictionWrittenBy" Association="BooksModel.WrittenBy">
<End Role="Book" EntitySet="FictionBooks" />
<End Role="Author" EntitySet="FictionAuthors" />
</AssociationSet>
</EntityContainer>