association set
Sada přidružení je logický kontejner pro instance přidružení stejného typu. Sada přidružení není konstruktor modelování dat; to znamená, že nepopisuje strukturu dat nebo relací. Sada přidružení 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í přidružení, aby bylo možné je namapovat na úložiště dat.
Sada přidružení je definována v kontejneru entity, což je logické seskupení sad entit a sad přidružení.
Definice sady přidružení obsahuje následující informace:
Název sady přidružení. (Povinné)
Přidružení, jehož přidružení bude obsahovat instance. (Povinné)
Příklad
Následující diagram znázorňuje koncepční model se dvěma přidruženími: PublishedBy
a WrittenBy
. I když se v diagramu nezobrazují informace o sadách přidružení, další diagram ukazuje příklad sad přidružení a sad entit založených na tomto modelu.
Následující příklad ukazuje sadu přidružení (PublishedBy
) a dvě sady entit (Books
a Publishers
) na základě konceptuálního modelu uvedeného 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 přidružení pro každé přidružení v diagramu výše. Všimněte si, že název a přidružení pro každou sadu přidružení 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 přidružení na přidružení, pokud žádné dvě sady přidružení sdílejí konec sady přidružení. Následující CSDL definuje kontejner entit se dvěma sadami přidružení pro WrittenBy
přidružení. Všimněte si, že pro typy entit byla definována Book
více sad entit a Author
že žádná sada přidružení nesdílí konec sady přidružení.
<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>