association set
İlişki kümesi, aynı türdeki ilişkilendirme örnekleri için mantıksal bir kapsayıcıdır. İlişki kümesi bir veri modelleme yapısı değildir; diğer bir ifadeyle, verilerin veya ilişkilerin yapısını açıklamaz. Bunun yerine, ilişkilendirme kümesi, bir veri deposuna eşlenebilmeleri için ilişkilendirme örneklerini gruplandırmak için barındırma veya depolama ortamı (ortak dil çalışma zamanı veya SQL Server veritabanı gibi) için bir yapı sağlar.
İlişki kümesi, varlık kümelerinin ve ilişkilendirme kümelerinin mantıksal gruplandırmalarından oluşan bir varlık kapsayıcısı içinde tanımlanır.
İlişkilendirme kümesinin tanımı aşağıdaki bilgileri içerir:
İlişkilendirme kümesi adı. (Gerekli)
Örnekleri içereceği ilişkilendirme. (Gerekli)
Örnek
Aşağıdaki diyagramda iki ilişkilendirmeye sahip kavramsal bir model gösterilmektedir: PublishedBy
, ve WrittenBy
. İlişkilendirme kümeleri hakkındaki bilgiler diyagramda aktarılmasa da, sonraki diyagramda bu modeli temel alan ilişkilendirme kümeleri ve varlık kümeleri örneği gösterilir.
Aşağıdaki örnekte, yukarıda gösterilen kavramsal modeli temel alan bir ilişkilendirme kümesi (PublishedBy
) ve iki varlık kümesi (Books
ve Publishers
) gösterilmektedir. Varlık kümesindeki Books
bi, çalışma zamanında varlık türünün bir örneğini Book
temsil eder. Benzer şekilde, Pj varlık kümesindeki Publishers
bir Publisher
örneği temsil eder. BiPj, ilişkilendirme kümesindeki PublishedBy
ilişkilendirmenin bir örneğini PublishedBy
temsil eder.
ADO.NET Entity Framework, kavramsal modelleri tanımlamak için kavramsal şema tanım dili (CSDL) olarak adlandırılan etki alanına özgü bir dil (DSL) kullanır. Aşağıdaki CSDL, yukarıdaki diyagramda her ilişkilendirme için bir ilişkilendirme ayarlanmış bir varlık kapsayıcısı tanımlar. Her ilişkilendirme kümesinin adının ve ilişkilendirmesinin XML öznitelikleri kullanılarak tanımlandığını unutmayın.
<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>
İlişkilendirme kümesi bitişini paylaşan iki ilişkilendirme kümesi olmadığı sürece, ilişkilendirme başına birden çok ilişkilendirme kümesi tanımlamak mümkündür. Aşağıdaki CSDL, ilişkilendirme için iki ilişkilendirme kümesine sahip bir varlık kapsayıcısını WrittenBy
tanımlar. ve Author
varlık türleri için birden çok varlık kümesi tanımlandığına Book
ve hiçbir ilişkilendirme kümesinin ilişkilendirme kümesi sonunu paylaşmadığını fark edin.
<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>