Zusammengesetzte DB-Schlüssel mit Entity Framework 4.0

composite-key entity-framework primary-key

Frage

Bei der Neugestaltung einer großen Datenbank in unserem Unternehmen werden zusammengesetzte Primärschlüssel in der Datenbank umfassend verwendet.

Wenn Sie die Auswirkungen auf die Leistung vergessen, wird dies zu Schwierigkeiten bei der Arbeit mit dieser Datenbank in Entity Framework 4.0 führen? Es ist unwahrscheinlich, dass sich die Datenbankstruktur ändert, und ich suche keine "philosophische" Debatte, aber was sind die praktischen Auswirkungen?

Laut Jeremy Miller : "Composite-Schlüssel machen jede Art von Objekt- / Relational-Mapping und -Persistenz im Allgemeinen schwieriger." aber er sagt nicht wirklich warum. Ist dies wichtig, wie Entity Framework 4.0 mit Schlüsseln umgeht?

Akzeptierte Antwort

Nein, EF4 unterstützt zusammengesetzte Schlüssel.

Das Problem ist eine Tabelle mit einem Ersatzschlüssel und zusammengesetzten Schlüsseln. Sie können für jedes Modell nur einen einzigen Schlüssel einstellen. Dieser Schlüssel kann mehrere Felder haben, aber Sie können aus Sicht des Designers nur eines haben. Nicht sicher, ob Sie die XML- oder Code-Mapping manuell bearbeiten möchten.

Sie können ein Feld als Identität und nicht als Schlüssel festlegen, wenn Sie einen zusammengesetzten und einen Ersatzschlüssel für dieselbe Tabelle benötigen. Das Identity (Id) -Feld wird nicht von ObjectContext oder ObjectStateTracker verwendet, wird jedoch inkrementiert und kann jedoch abgefragt werden.


Beliebte Antwort

Ich hatte Probleme mit EF4 und zusammengesetzten Schlüsseln. Es unterstützt keine Spalten, die als Komponenten in mehr als einem Schlüssel in einer Join-Tabelle verwendet werden.

Siehe meine vorherige Frage Weitere Informationen dazu, wie Sie zusammengesetzte Fremdschlüssel in einer Vielzahl von Beziehungen in Entity Framework abbilden. Der Wahnsinn ist, dass, wenn Sie eine Join-Tabelle haben (die viele Beziehungen beschreibt), in der beide Beziehungen einen gemeinsamen Schlüssel verwenden, eine Fehlermeldung angezeigt wird

Fehler 3021: Problem beim Zuordnen von Fragmenten ...: Jede der folgenden Spalten in der Table PageView ist mehreren konzeptionellen Seiteneigenschaften zugeordnet: PageView.Version ist zugeordnet (PageView_Association.View.Version, PageView_Association.Page.Version).

Die einzige Möglichkeit bestand darin, die Kolonne zu duplizieren, die den Zweck, sie überhaupt dort zu haben, vereitelt.

Viel Glück!



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum