kumpulan asosiasi
Kumpulan asosiasi adalah kontainer logis untuk instans asosiasi dari jenis yang sama. Kumpulan asosiasi bukanlah konstruksi pemodelan data; artinya, tidak menggambarkan struktur data atau hubungan. Sebagai gantinya, kumpulan asosiasi menyediakan konstruksi untuk lingkungan hosting atau penyimpanan (seperti runtime bahasa umum atau database SQL Server) untuk mengelompokkan instans asosiasi sehingga mereka dapat dipetakan ke penyimpanan data.
Kumpulan asosiasi didefinisikan dalam kontainer entitas, yang merupakan pengelompokan logis dari kumpulan entitas dan kumpulan asosiasi.
Definisi untuk himpunan asosiasi berisi informasi berikut:
Nama set asosiasi. (Diperlukan)
Asosiasi yang akan berisi instans. (Diperlukan)
Contoh
Diagram di bawah menunjukkan model konseptual dengan dua asosiasi: PublishedBy
, dan WrittenBy
. Meskipun informasi tentang kumpulan asosiasi tidak disampaikan dalam diagram, diagram berikutnya menunjukkan contoh kumpulan asosiasi dan kumpulan entitas berdasarkan model ini.
Contoh berikut menunjukkan kumpulan asosiasi (PublishedBy
) dan dua kumpulan entitas (Books
dan Publishers
) berdasarkan model konseptual yang ditunjukkan di atas. Bi dalam kumpulan entitas Books
mewakili instans jenis entitas Book
saat runtime. Demikian pula, Pj mewakili instans Publisher
dalam kumpulan entitas Publishers
. BiPj mewakili instans pengaitan PublishedBy
dalam kumpulan pengaitan PublishedBy
.
ADO.NET Entity Framework menggunakan bahasa khusus domain (DSL) yang disebut bahasa definisi skema konseptual (CSDL) untuk mendefinisikan model konseptual. CSDL berikut mendefinisikan kontainer entitas dengan satu kumpulan asosiasi untuk setiap asosiasi dalam diagram di atas. Perhatikan bahwa nama dan asosiasi untuk setiap kumpulan asosiasi didefinisikan menggunakan 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>
Dimungkinkan untuk menentukan beberapa kumpulan asosiasi per asosiasi, selama tidak ada dua kumpulan asosiasi yang berbagi kumpulan asosiasi berakhir. CSDL berikut mendefinisikan kontainer entitas dengan dua kumpulan asosiasi untuk asosiasi WrittenBy
. Perhatikan bahwa beberapa kumpulan entitas telah ditentukan untuk jenis entitas Book
dan Author
dan tidak ada kumpulan asosiasi yang berbagi kumpulan asosiasi berakhir.
<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>