Freigeben über


Entitätsschlüssel

Ein Entitätsschlüssel ist eine Eigenschaft oder eine Gruppe von Eigenschaften eines Entitätstyps , die zum Ermitteln der Identität verwendet werden. Die Eigenschaften, aus denen ein Entitätsschlüssel besteht, werden zur Entwurfszeit ausgewählt. Die Werte von Entitätsschlüsseleigenschaften müssen eine Entitätstypinstanz innerhalb eines Entitätssatzes zur Laufzeit eindeutig identifizieren. Die Eigenschaften, aus denen ein Entitätsschlüssel besteht, sollten ausgewählt werden, um die Eindeutigkeit von Instanzen in einem Entitätssatz zu gewährleisten.

Im Folgenden sind die Anforderungen für eine Reihe von Eigenschaften als Entitätsschlüssel aufgeführt:

  • Es können keine zwei Entitätsschlüssel innerhalb eines Entitätssatzes identisch sein. Dies bedeutet, dass für alle zwei Entitäten innerhalb eines Entitätssatzes die Werte für alle Eigenschaften, die einen Schlüssel darstellen, nicht identisch sein können. Einige (aber nicht alle) Werte, aus denen ein Entitätsschlüssel besteht, können jedoch identisch sein.

  • Ein Entitätsschlüssel muss aus einer Reihe nicht nullfähiger, unveränderlicher, primitiver Typeigenschaften bestehen.

  • Die Eigenschaften, aus denen ein Entitätsschlüssel für einen bestimmten Entitätstyp besteht, kann nicht geändert werden. Sie können nicht mehr als einen möglichen Entitätsschlüssel für einen bestimmten Entitätstyp zulassen; Ersatzschlüssel werden nicht unterstützt.

  • Wenn eine Entität an einer Vererbungshierarchie beteiligt ist, muss die Stammentität alle Eigenschaften enthalten, aus denen der Entitätsschlüssel besteht, und der Entitätsschlüssel muss für den Stammentitätstyp definiert werden. Weitere Informationen finden Sie unter Entity Data Model: Vererbung.

Beispiel

Das folgende Diagramm zeigt ein konzeptionelles Modell mit drei Entitätstypen: Book, , Publisherund Author. Die Eigenschaften der einzelnen Entitätstypen, aus denen ihr Entitätsschlüssel besteht, werden mit "(Key)" gekennzeichnet. Beachten Sie, dass der Entitätstyp Author über einen Entitätsschlüssel verfügt, der aus zwei Eigenschaften besteht, Name und Address.

Beispielmodell mit drei Entitätstypen

Das ADO.NET Entity Framework verwendet eine domänenspezifische Sprache (DSL), die als konzeptuelle Schemadefinitionssprache (CSDL) bezeichnet wird, um konzeptionelle Modelle zu definieren. Die unten aufgeführte CSDL definiert den Book entitätstyp, der im obigen Diagramm dargestellt ist. Beachten Sie, dass der Entitätsschlüssel durch Verweisen auf die ISBN Eigenschaft des Entitätstyps definiert wird.

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

Die ISBN Eigenschaft ist eine gute Wahl für den Entitätsschlüssel, da eine International Standard Book Number (ISBN) ein Buch eindeutig identifiziert.

Die unten aufgeführte CSDL definiert den Author entitätstyp, der im obigen Diagramm dargestellt ist. Beachten Sie, dass der Entitätsschlüssel aus zwei Eigenschaften, Name und Address, besteht.

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

Die Verwendung Name und Address für den Entitätsschlüssel ist eine angemessene Wahl, da zwei Autoren desselben Namens wahrscheinlich nicht an derselben Adresse leben. Diese Auswahl für einen Entitätsschlüssel garantiert jedoch nicht unbedingt eindeutige Entitätsschlüssel in einem Entitätssatz. Das Hinzufügen einer Eigenschaft wie AuthorId, die für die eindeutige Identifizierung eines Autors verwendet werden könnte, wird in diesem Fall empfohlen.

Siehe auch