Freigeben über


Key-Element (CSDL)

Das Key-Element ist ein untergeordnetes Element des EntityType-Elements und definiert einen Entitätsschlüssel (eine Eigenschaft oder ein Satz von Eigenschaften eines Entitätstyps, der Identität bestimmt).Die Eigenschaften, die einen Entitätsschlüssel bilden, werden zur Entwurfszeit ausgewählt.Die Werte von Entitätsschlüsseleigenschaften müssen zur Laufzeit eindeutig eine Entitätstypinstanz innerhalb eines Entitätssatzes identifizieren.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.Das Key-Element definiert einen Entitätsschlüssel, indem es auf mindestens eine der Eigenschaften eines Entitätstyps verweist.

Das Key-Element kann die folgenden untergeordneten Elemente aufweisen:

Anwendbare Attribute

Eine beliebige Anzahl von Anmerkungsattributen (benutzerdefinierte XML-Attribute) können für das Key-Element übernommen werden.Benutzerdefinierte Attribute dürfen jedoch zu keinem XML-Namespace gehören, der für CSDL reserviert ist.Die vollqualifizierten Namen für zwei benutzerdefinierte Attribute dürfen nicht übereinstimmen.

Beispiel

Im folgenden Beispiel wird ein Entitätstyp mit dem Namen Book definiert.Der Entitätsschlüssel wird definiert, indem auf die ISBN-Eigenschaft des Entitätstyps verwiesen 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 für den Entitätsschlüssel gut geeignet, da durch die ISBN ein Buch eindeutig identifiziert wird.

Das folgende Beispiel zeigt einen Entitätstyp (Author), dessen Entitätstyp aus zwei Eigenschaften besteht: Name und 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.Dieser Entitätsschlüssel garantiert jedoch nicht absolut eindeutige Entitätsschlüssel in einem Entitätssatz.In diesem Fall wäre das Hinzufügen einer Eigenschaft, z. B. AuthorId, zur eindeutigen Identifikation eines Autors empfehlenswert.

Siehe auch

Konzepte

Übersicht über das Entity Framework

CSDL-Spezifikation

Schema-Element (CSDL)

Entitätsschlüssel

Andere Ressourcen

CSDL-, SSDL- und MSL-Spezifikationen

ADO.NET Entity Data Model Tools