Aracılığıyla paylaş


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:

Ö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.

Example model with three entity types

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.

Screenshot that shows a Sets example.

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>

Ayrıca bkz.