Entitätsschlüsselentity key

Ein Entitäts Schlüssel ist eine Eigenschaft oder ein Satz von Eigenschaften eines Entitäts Typs , die zur Bestimmung der Identität verwendet werden.An entity key is a property or a set of properties of an entity type that are used to determine identity. Die Eigenschaften, die einen Entitätsschlüssel bilden, werden zur Entwurfszeit ausgewählt.The properties that make up an entity key are chosen at design time. Die Werte von Entitäts Schlüsseleigenschaften müssen eine Entitätstyp Instanz innerhalb einer Entitätenmenge zur Laufzeit eindeutig identifizieren.The values of entity key properties must uniquely identify an entity type instance within an entity set at run time. Die Eigenschaften, die einen Entitätsschlüssel bilden, sollten so ausgewählt werden, dass die Eindeutigkeit von Instanzen in einem Entitätssatz gewährleistet ist.The properties that make up an entity key should be chosen to guarantee uniqueness of instances in an entity set.

Nachfolgend werden die Anforderungen für eine Reihe von Eigenschaften für einen Entitätsschlüssel gezeigt:The following are the requirements for a set of properties to be an entity key:

  • Zwei Entitätsschlüssel innerhalb einer Entitätenmenge können nicht identisch sein.No two entity keys within an entity set can be identical. Dies bedeutet, dass für zwei Entitäten innerhalb einer Entitätenmenge die Werte für alle Eigenschaften, die einen Schlüssel bilden, nicht gleich sein können.That is, for any two entities within an entity set, the values for all of the properties that constitute a key cannot be the same. Allerdings können einige (aber nicht alle) Werte, die eine Entitätsschlüssel bilden, gleich sein.However, some (but not all) of the values that make up an entity key can be the same.

  • Ein Entitäts Schlüssel muss aus einer Reihe von unveränderlichen, primitiven Typeigenschaftenbestehen, die keine NULL-Werte zulassen.An entity key must consist of a set of non-nullable, immutable, primitive type properties.

  • Die Eigenschaften, die einen Entitätsschlüssel für einen bestimmten Entitätstyp bilden, können sich nicht ändern.The properties that make up an entity key for a given entity type cannot change. Sie können nicht mehr als einen möglichen Entitätsschlüssel für einen bestimmte Entitätstyp zulassen. Ersatzschlüssel werden nicht unterstützt.You cannot allow more than one possible entity key for a given entity type; surrogate keys are not supported.

  • Wenn eine Entität an einer Vererbungshierarchie beteiligt ist, muss die Stammentität alle Eigenschaften enthalten, die den Entitätsschlüssel bilden, und der Entitätsschlüssel muss für den Stammentitätstyp definiert sein.When an entity is involved in an inheritance hierarchy, the root entity must contain all the properties that make up the entity key, and the entity key must be defined on the root entity type. Weitere Informationen finden Sie unter Entity Data Model: Vererbung.For more information, see Entity Data Model: Inheritance.

BeispielExample

Die unten stehende Abbildung zeigt ein konzeptionelles Modell mit drei Entitätstypen: Book, Publisher und Author.The diagram below shows a conceptual model with three entity types: Book, Publisher, and Author. Die Eigenschaften jedes Entitätstyps, die den entsprechenden Entitätsschlüssel bilden, werden mit "(Schlüssel)" angegeben.The properties of each entity type that make up its entity key are denoted with "(Key)". Beachten Sie, dass der Entitätstyp Author über einen Entitätsschlüssel verfügt, der aus zwei Eigenschaften besteht: Name und Address.Note that the Author entity type has an entity key that consists of two properties, Name and Address.

Beispielmodell mit drei Entitäts Typen

Der ADO.NET-Entity Framework verwendet eine domänenspezifische Sprache (DSL) mit der Bezeichnung konzeptionelle Schema Definitions Sprache (CSDL), um konzeptionelle Modelle zu definieren.The ADO.NET Entity Framework uses a domain-specific language (DSL) called conceptual schema definition language (CSDL) to define conceptual models. Die nachfolgende CSDL definiert den in der Abbildung oben gezeigten Book-Entitätstyp.The CSDL below defines the Book entity type shown in the diagram above. Der Entitätsschlüssel wird definiert, indem auf die ISBN-Eigenschaft des Entitätstyps verwiesen wird.Note that the entity key is defined by referencing the ISBN property of the entity type.

<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 für den Entitätsschlüssel gut geeignet, da durch die ISBN ein Buch eindeutig identifiziert wird.The ISBN property is a good choice for the entity key because an International Standard Book Number (ISBN) uniquely identifies a book.

Die nachfolgende CSDL definiert den in der Abbildung oben gezeigten Author-Entitätstyp.The CSDL below defines the Author entity type shown in the diagram above. Beachten Sie, dass der Entitätsschlüssel aus zwei Eigenschaften besteht: Name und Address.Note that the entity key consists of two properties, Name and 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>

Die Verwendung von Name und Address für den Entitätsschlüssel ist empfehlenswert, da zwei Autoren mit demselben Namen sehr wahrscheinlich nicht die gleiche Adresse besitzen.Using Name and Address for the entity key is a reasonable choice, because two authors of the same name are unlikely to live at the same address. Dieser Entitätsschlüssel garantiert jedoch nicht absolut eindeutige Entitätsschlüssel in einem Entitätssatz.However, this choice for an entity key does not absolutely guarantee unique entity keys in an entity set. In diesem Fall wäre das Hinzufügen einer Eigenschaft, z. B. AuthorId, zur eindeutigen Identifikation eines Autors empfehlenswert.Adding a property, such as AuthorId, that could be used to uniquely identify an author would be recommended in this case.

Siehe auchSee also