Aracılığıyla paylaş


varlık anahtarı

Varlık anahtarı, kimliği belirlemek için kullanılan varlık türünün bir özelliği veya özellik kümesidir. Varlık anahtarını oluşturan özellikler tasarım zamanında seçilir. Varlık anahtarı özelliklerinin değerleri, çalışma zamanında bir varlık kümesi içindeki varlık türü örneğini benzersiz olarak tanımlamalıdır. Varlık kümesindeki örneklerin benzersizliğini garanti etmek için varlık anahtarını oluşturan özellikler seçilmelidir.

Bir özellik kümesinin varlık anahtarı olması için gereksinimler şunlardır:

  • Varlık kümesindeki iki varlık anahtarı aynı olamaz. Diğer bir ifadeyle, bir varlık kümesindeki iki varlık için anahtar oluşturan tüm özelliklerin değerleri aynı olamaz. Ancak, bir varlık anahtarını oluşturan değerlerin bazıları (ancak tümü değil) aynı olabilir.

  • Bir varlık anahtarı, null olamayacak, değişmez ve temel tür özelliklerinden oluşan bir kümeden oluşmalıdır.

  • Belirli bir varlık türü için varlık anahtarını oluşturan özellikler değiştirilemez. Belirli bir varlık türü için birden fazla olası varlık anahtarına izin veremezsiniz; vekil anahtarları desteklenmez.

  • Bir varlık devralma hiyerarşisine dahil olduğunda, kök varlığın varlık anahtarını oluşturan tüm özellikleri içermesi ve varlık anahtarının kök varlık türünde tanımlanması gerekir. Daha fazla bilgi için bkz. Varlık Veri Modeli: Devralma.

Örnek

Aşağıdaki diyagramda üç varlık türüne sahip kavramsal bir model gösterilmektedir: Book, Publisherve Author. Varlık anahtarını oluşturan her varlık türünün özellikleri "(Anahtar)" ile belirtilir. Author varlık türünün iki özelliğinden oluşan bir varlık anahtarı olduğunu, Name ve Address özelliklerine dikkat edin.

Üç varlık türüne sahip örnek model

ADO.NET Entity Framework, kavramsal modelleri tanımlamak için kavramsal şema tanım dili (CSDL) adlı etki alanına özgü bir dil (DSL) kullanır. Aşağıdaki CSDL, yukarıdaki diyagramda gösterilen varlık türünü tanımlar Book . Varlık anahtarının varlık türünün özelliğine ISBN başvurarak tanımlandığını unutmayın.

<EntityType Name="Book">
  <Key>
    <PropertyRef Name="ISBN" />
  </Key>
  <Property Type="String" Name="ISBN" Nullable="false" />
  <Property Type="String" Name="Title" Nullable="false" />
  <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
  <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                      FromRole="Book" ToRole="Publisher" />
  <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                      FromRole="Book" ToRole="Author" />
</EntityType>

ISBN Uluslararası Standart Kitap Numarası (ISBN) bir kitabı benzersiz olarak tanımladığından, özellik varlık anahtarı için iyi bir seçimdir.

Aşağıdaki CSDL, yukarıdaki diyagramda gösterilen varlık türünü tanımlar Author . Varlık anahtarının Name ve Address olmak üzere iki özelliğinden oluştuğuna dikkat edin.

<EntityType Name="Author">
  <Key>
    <PropertyRef Name="Name" />
    <PropertyRef Name="Address" />
  </Key>
  <Property Type="String" Name="Name" Nullable="false" />
  <Property Type="String" Name="Address" Nullable="false" />
  <NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
                      FromRole="Author" ToRole="Book" />
</EntityType>

Name ve Address varlık anahtarı olarak kullanmak makul bir seçimdir, çünkü aynı ada sahip iki yazarın aynı adreste yaşama olasılığı düşüktür. Ancak, varlık anahtarı için bu seçenek, varlık kümesindeki benzersiz varlık anahtarlarını kesinlikle garanti etmez. Bu durumda, bir yazarı benzersiz olarak tanımlamak için kullanılabilecek gibi AuthorIdbir özellik eklenmesi önerilir.

Ayrıca bakınız