EntityFramework 5 Code Erste Mehrfach-Vererbungs-Zuordnung (TPC)

8

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:

Modell

%Vor%

Kontext

%Vor%

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)

%Vor%

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

enthält

Ich habe das auf meinem MyContext.OnModelCreating versucht:

%Vor%

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.

    
Jupaol 15.03.2013, 19:20
quelle

1 Antwort

2

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.

    
Ibrahim Najjar 16.03.2013 00:18
quelle