Freigeben über


Gewusst wie: Erstellen eines Entitätsschlüssels, wenn kein Schlüssel abgeleitet wurde (Entity Framework)

In diesem Thema wird beschrieben, wie eine EDMX-Datei manuell bearbeitet wird, um einen Entitätsschlüssel zu ändern, wenn der Assistent für Entity Data Model oder der Modellaktualisierungs-Assistent keinen Entitätsschlüssel ableiten konnte.

Wenn Sie eine EDMX-Datei mit dem Assistenten für Entity Data Model oder dem Modellaktualisierungs-Assistenten generieren oder aktualisieren, wird der Schlüssel eines Entitätstyps dem Primärschlüssel der entsprechenden Tabelle zugeordnet. Wenn kein Primärschlüssel definiert ist (z. B. in einer Ansicht), versuchen die Tools, auf Grundlage der Spalten der Tabelle bzw. Ansicht einen eindeutigen Entitätsschlüssel abzuleiten. Der abgeleitete Schlüssel besteht aus allen Spalten, die keine NULL-Werte zulassen, und allen nicht binären Spalten der Tabelle bzw. Ansicht. Falls die Tabelle oder die Ansicht nur Spalten enthält, die NULL-Werte zulassen oder binär sind, wird kein Schlüssel abgeleitet.

Wenn kein Entitätsschlüssel abgeleitet wird, wird die Entität dem Modell nicht hinzugefügt. Stattdessen wird dem SSDL-Abschnitt der EDMX-Datei ein Codekommentar hinzugefügt, der das EntityType-Element (ohne definierten Schlüssel) enthält.

Weitere Informationen zu Entitätsschlüsseln finden Sie unter EntityType Element (CSDL) und EntityType Element (SSDL).

Die Verfahren in diesem Thema setzen voraus, dass Sie eine gültige EDMX-Datei in Visual Studio geöffnet haben.

Dd163156.note(de-de,VS.100).gifHinweis:
Die in diesen Verfahren beschriebenen Änderungen am SSDL-Abschnitt einer EDMX-Datei werden überschrieben, wenn Sie das Modell mithilfe des Modellaktualisierungs-Assistenten aktualisieren.Ändern Sie in diesem Fall das Datenbankschema, sodass jede Tabelle über einen Primärschlüssel verfügt oder mindestens eine Spalte jeder Tabelle oder Ansicht keine NULL-Werte zulässt oder nicht binär ist. Auf diese Weise muss die EDMX-Datei nicht manuell bearbeitet werden.

Hinzufügen eines Entitätsschlüssels, wenn kein Schlüssel von einer Tabelle abgeleitet wurde

Das folgende Verfahren gilt für einen Entitätstyp, der einer Tabelle entspricht. Dieses Verfahren setzt voraus, dass die EDMX-Datei im XML-Editor geöffnet ist.

Wenn der Entity Designer keinen Entitätsschlüssel auf Grundlage der Spalten einer Tabelle ableiten kann, wird die Entität dem Modell nicht hinzugefügt. Stattdessen wird dem SSDL-Abschnitt der EDMX-Datei ein Codekommentar hinzugefügt, der das EntityType-Element (ohne definierten Schlüssel) enthält.

So fügen Sie einen Entitätsschlüssel hinzu, wenn kein Schlüssel von einer Tabelle abgeleitet wird

  1. Heben Sie die Auskommentierung des EntityType-Elements im SSDL-Abschnitt der EDMX-Datei auf.

  2. Definieren Sie den Schlüssel für den Entitätstyp, indem Sie dem EntityType-Element die entsprechenden Key-Elemente hinzufügen. Weitere Informationen finden Sie unter EntityType Element (SSDL).

    Dd163156.note(de-de,VS.100).gifHinweis:
    Die zum Definieren des Entitätsschlüssels verwendeten Spalten müssen eine Zeile in der Tabelle eindeutig identifizieren.

  3. Fügen Sie im SSDL-Abschnitt ein EntitySet-Element hinzu, das die Tabelle angibt, der der hinzugefügte Entitätstyp zugeordnet ist. Weitere Informationen finden Sie unter EntitySet Element (EntityContainer SSDL).

  4. Fügen Sie im CSDL-Abschnitt ein EntityType-Element hinzu, das dem hinzugefügten SSDL-Entitätstyp entspricht. Weitere Informationen finden Sie unter EntityType Element CSDL.

  5. Fügen Sie im C-S-Mappingabschnitt (konzeptionelles Modell zu Speichermodell) ein EntitySetMapping-Element hinzu, das die Zuordnung zwischen den hinzugefügten SSDL- und CSDL-Entitätstypen angibt. Weitere Informationen finden Sie unter EntitySetMapping Element (MSL).

Hinzufügen eines Entitätsschlüssels, wenn kein Schlüssel von einer Ansicht abgeleitet wird

Das folgende Verfahren gilt für einen Entitätstyp, der einer Ansicht entspricht. Dieses Verfahren setzt voraus, dass die EDMX-Datei im XML-Editor geöffnet ist.

Wenn der Entity Designer keinen Entitätsschlüssel auf Grundlage der Spalten einer Ansicht ableiten kann, wird die Entität dem Modell nicht hinzugefügt. Stattdessen wird dem SSDL-Abschnitt der EDMX-Datei ein Codekommentar hinzugefügt, der das EntityType-Element (ohne definierten Schlüssel) enthält.

So fügen Sie einen Entitätsschlüssel hinzu, wenn kein Schlüssel von einer Ansicht abgeleitet wird

  1. Heben Sie die Auskommentierung des EntityType-Elements im SSDL-Abschnitt der EDMX-Datei auf.

  2. Definieren Sie den Schlüssel für den Entitätstyp, indem Sie dem EntityType-Element die entsprechenden Key-Elemente hinzufügen. Weitere Informationen finden Sie unter EntityType Element (SSDL).

    Dd163156.note(de-de,VS.100).gifHinweis:
    Die zum Definieren des Entitätsschlüssels verwendeten Spalten müssen eine Zeile in der Ansicht eindeutig identifizieren.

  3. Fügen Sie dem Modell eine definierende Abfrage hinzu. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen einer definierenden Abfrage (Entity Framework).

Siehe auch

Konzepte

Übersicht über die EDMX-Datei (Entity Framework)