Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Klíč entity je vlastnost nebo sada vlastností typu entity, které slouží k určení identity. Vlastnosti, které tvoří klíč entity, jsou vybrány v době návrhu. Hodnoty vlastností klíče entity musí jednoznačně identifikovat instanci typu entity v rámci množiny entit za běhu. Vlastnosti, které tvoří klíč entity, by měly být zvoleny k zajištění jedinečnosti instancí v sadě entit.
Níže jsou uvedeny požadavky na sadu vlastností, které mají být klíčem entity:
Žádné dva klíče entit v sadě entit nemohou být identické. To znamená, že pro všechny dvě entity v rámci sady entit nemohou být hodnoty pro všechny vlastnosti, které tvoří klíč, stejné. Některé (ale ne všechny) hodnoty, které tvoří klíč entity, však můžou být stejné.
Klíč entity se musí skládat ze sady nenulových, neměnných a primitivních vlastností typu.
Vlastnosti, které tvoří klíč entity pro daný typ entity, nelze změnit. Pro daný typ entity nelze povolit více než jeden možný klíč entity; náhradní klíče nejsou podporovány.
Pokud je entita zapojená do hierarchie dědičnosti, musí kořenová entita obsahovat všechny vlastnosti, které tvoří klíč entity, a klíč entity musí být definován v kořenovém typu entity. Další informace najdete v tématu Entity Data Model: Dědičnost.
Příklad
Následující diagram znázorňuje koncepční model se třemi typy entit: Book, Publishera Author. Vlastnosti každého typu entity, který tvoří klíč entity, jsou označeny "(Key)". Všimněte si, že Author typ entity má klíč entity, který se skládá ze dvou vlastností a NameAddress.
ADO.NET Entity Framework používá jazyk specifický pro doménu (DSL) označovaný jako jazyk CSDL (Conceptual Schema Definition Language) k definování konceptuálních modelů. CsDL níže definuje Book typ entity zobrazený v diagramu výše. Všimněte si, že klíč entity je definován odkazem na ISBN vlastnost typu entity.
<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>
Vlastnost ISBN je dobrou volbou pro klíč entity, protože číslo isBN (International Standard Book Number) jednoznačně identifikuje knihu.
CsDL níže definuje Author typ entity zobrazený v diagramu výše. Všimněte si, že klíč entity se skládá ze dvou vlastností Name a Address.
<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>
Použití Name a Address klíč entity je rozumnou volbou, protože dva autoři stejného názvu pravděpodobně nebudou žít na stejné adrese. Tato volba pro klíč entity však nezaručuje jedinečné klíče entit v sadě entit. V tomto případě se doporučuje přidat vlastnost, jako je AuthorId, která by se dala použít k jednoznačné identifikaci autora.