Ich muss die Vererbung mit EF4 und das TPH-Modell verwenden, das von DB erstellt wurde.
Ich habe ein neues Projekt zum Testen von Simple-Klassen erstellt.
Da ist mein Klassenmodell:
Es gibt meine Tabelle in SQL SERVER 2008:
%Vor%Ich habe eine Bedingung in mein EDMX im Diskriminatorfeld eingefügt, um die Entitäten Scooter, Car, Motorbike und Bike zu unterscheiden.
Motorisierte Fahrzeuge und Fahrzeuge sind abstrakt.
Aber wenn ich kompiliere, erscheint dieser Fehler:
Fehler 3032: Problem beim Abbilden von Fragmenten ab Zeile 78, 85: EntityTypes EF4InheritanceModel.Scooter, EF4InheritanceModel.Motorbike, EF4InheritanceModel.Car, EF4InheritanceModel.Bike werden zugeordnet zu den gleichen Zeilen in der Tabelle Fahrzeug. Zuordnungsbedingungen können verwendet werden Unterscheiden Sie die Zeilen, denen diese Typen zugeordnet sind.
Bearbeiten:
Nach Ladislav:
Ich versuche es und den Fehler zu ändern, um es für alle meine Entitäten zu werden:
Fehler 3034: Problem beim Abbilden von Fragmenten beginnend bei Zeilen 72, 86: Eine Entität wird & gt; verschiedene Zeilen innerhalb derselben Tabelle. Stellen Sie sicher, dass diese beiden Zuordnungsfragmente nicht zwei & gt; Gruppen von Entitäten mit überlappenden Schlüsseln zu zwei verschiedenen Gruppen von Zeilen.
An Henk (mit Ladislay-Vorschlag):
Es gibt alle Zuordnungen Details:
Was ist los?
Danke
EF4 behandelt diese nicht gut. Du kannst es mit einem Diskriminator machen, aber die Klassen müssen nicht-abstrakt sein. Sie müssen eine andere Methode wie Codeanalyse oder Tests verwenden, um sicherzustellen, dass die Basisklasse niemals von etwas anderem als Entity Framework instanziiert wird.
Oder Sie können auf EF6 aktualisieren. Ich bin nicht sicher, ob es es besser unterstützt, aber es behandelt definitiv Modellhierarchien besser und erlaubt bessere Datenbankschemata, die das Modell besser unterstützen.
Tags und Links c# entity-framework inheritance entity-framework-4