Alles klar, wahrscheinlich wurde diese Frage schon beantwortet, aber ich habe recherchiert und finde einfach keine Lösung für mein spezifisches Problem
Code dieses Beispiels - Visual Studio 2012 - Konsolen-App
Ich habe also ein EntityFramework Code First-Modell mit mehreren Vererbungsobjekten. Ich habe dieses Beispiel erstellt, das mein Problem darstellt:
Ich möchte TPC (Table Per Concrete Type) Zuordnung
Nach dem Ausführen der Migration und dem Aktualisieren meiner Datenbank ist dies das Ergebnis:
Das war meine Erwartung. So weit, so gut.
Aber dann ....... Ich habe beschlossen, ein Gender
-Objekt und eine Eigenschaft zu meiner Person
-Klasse wie folgt hinzuzufügen:
(Dies ist nicht mein wirkliches Modell, es ist nur ein Beispiel)
Nach dem Anwenden der Migration und Aktualisieren der Datenbank ist dies das Datenbankmodell:
WHYYYYYYYY?
Was vermisse ich? Ich möchte nur, dass EF meine Referenz Eigenschaften in meiner Vererbungshierarchie abbildet. Ich erwarte, dass die Tabelle ExecutiveEmployees
einen Fremdschlüssel für Genders
genau wie Employees
und Genders
Ich habe das auf meinem MyContext.OnModelCreating
versucht:
Aber wenn ich versuche, die Migration hinzuzufügen, erhalte ich diesen Fehler:
Die Eigenschaft 'Geschlecht' des Typs 'ExecutiveEmployee' kann nicht zugeordnet werden, da sie explizit aus dem Modell ausgeschlossen wurde oder von einem Typ ist, der von der verwendeten DbModelBuilderVersion nicht unterstützt wird.
Nun, das ist seltsam, ich habe dein Sample ins Visual Studio gelaufen und habe EF Power Tools benutzt, um zu sehen, wie der EDMX-Generator diese Beziehungen visualisiert und das ist, was ich habe:
Aus diesem Diagramm kann ich sehen, warum dies schief geht, da nun das Entity-Framework annimmt, dass die Navigationseigenschaft bereits in der Elternklasse gefunden wurde.
Nun, wie, ich denke, das ist ein Fehler in Bezug auf Multi-Level-Vererbung in Code First mit TPC und sollte behoben werden.
Tags und Links c# entity-framework entity-framework-5 ef-code-first entity-framework-mapping