Aracılığıyla paylaş


entity key

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.

  • Varlık anahtarı null atanamaz, sabit, temel tür özellikleri kümesinden 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 ve Addressolmak üzere iki özelliğinden Name oluşan bir varlık anahtarı olduğuna dikkat edin.

Example model with three entity types

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 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 ve Addressiki özelliğinden Name 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 Aynı ada sahip iki yazarın aynı adreste yaşama olasılığı düşük olduğundan varlık anahtarı için ve Address kullanmak makul bir seçimdir. 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 bkz.