entitáskulcs
Az entitáskulcs az identitás meghatározására használt entitástípus tulajdonsága vagy tulajdonságkészlete. Az entitáskulcsot alkotó tulajdonságok a tervezéskor lesznek kiválasztva. Az entitáskulcs-tulajdonságok értékeinek egyedileg kell azonosítaniuk egy entitástípus-példányt egy futtatáskor beállított entitáson belül. Az entitáskulcsot alkotó tulajdonságokat úgy kell kiválasztani, hogy garantálják az entitáskészlet példányainak egyediségét.
Az alábbi követelmények vonatkoznak arra, hogy egy tulajdonságcsoport entitáskulcs legyen:
Az entitáskészleten belül nincs két entitáskulcs. Ez azt jelenti, hogy az entitáskészleten belüli két entitás esetében a kulcsokat alkotó összes tulajdonság értékei nem lehetnek azonosak. Az entitáskulcsot alkotó értékek némelyike (de nem az összes) azonos lehet.
Az entitáskulcsnak nem null értékű, nem módosítható, primitív típusú tulajdonságokból kell állnia.
Az adott entitástípushoz tartozó entitáskulcsot alkotó tulajdonságok nem módosíthatók. Egy adott entitástípushoz nem engedélyezhet egynél több lehetséges entitáskulcsot; a helyettesítő kulcsok nem támogatottak.
Ha egy entitás egy öröklési hierarchiában vesz részt, a gyökérentitásnak tartalmaznia kell az entitáskulcsot alkotó összes tulajdonságot, az entitáskulcsot pedig a legfelső szintű entitástípuson kell meghatározni. További információ: Entity Data Model: Öröklés.
Példa
Az alábbi ábrán egy három entitástípussal rendelkező fogalmi modell látható: Book
, Publisher
és Author
. Az entitáskulcsot alkotó egyes entitástípusok tulajdonságai a következővel vannak jelölve: "(Key)". Vegye figyelembe, hogy az Author
entitástípus egy két tulajdonságból Name
és Address
egy .
A ADO.NET Entity Framework egy tartományspecifikus nyelvet (DSL) használ, amelyet fogalmi sémadefiníciós nyelvnek (CSDL) hívunk a fogalmi modellek meghatározásához. Az alábbi CSDL a Book
fenti ábrán látható entitástípust határozza meg. Vegye figyelembe, hogy az entitáskulcs az entitástípus tulajdonságára való hivatkozással van definiálva ISBN
.
<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>
A ISBN
tulajdonság jó választás az entitáskulcshoz, mert egy nemzetközi standard könyvszám (ISBN) egyedileg azonosít egy könyvet.
Az alábbi CSDL a Author
fenti ábrán látható entitástípust határozza meg. Vegye figyelembe, hogy az entitáskulcs két tulajdonságból Name
és 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>
Az entitáskulcs használata és Address
használata Name
ésszerű választás, mivel két azonos nevű szerző nem valószínű, hogy ugyanazon a címen él. Az entitáskulcsok kiválasztása azonban nem garantálja teljesen az entitáskészlet egyedi entitáskulcsait. Ebben az esetben egy olyan tulajdonság hozzáadása javasolt, amely AuthorId
a szerző egyedi azonosítására használható.