Ich implementierte Vererbung mit einem Diskriminator-Feld, so dass alle meine Datensätze in derselben Tabelle sind. Mein Basistyp ist Person (auch der Name der Tabelle) und Fahrer und Passagier erben von ihm. Ich erhalte Instanzen des richtigen Typs (Fahrer und Beifahrer), wenn ich eine Abfrage für den Objektkontext zu Person ausführen. Beispiel:EF4-Vererbung und gespeicherte Prozeduren
var q = from d in ctx.Person
select d;
Aber ich schaffe auch eine Funktion, die die Ausgabe der Funktion der Art Person, die eine gespeicherte Prozedur und kartiert aufruft. Aber jetzt bekomme ich eine Liste von Personen und nicht von Fahrern oder Fahrgästen, wenn ich diese Methode ausführe.
Jeder eine Idee, wie das zu lösen ist oder ist das ein Fehler in EF4?
Das Problem ist, dass mein Diskriminatorfeld nicht auf dem Objekt verfügbar ist und ich möchte es so behalten, weil wir diese Eigenschaft den Entwicklern, die unsere Bibliothek verwenden, nicht zugänglich machen wollen. Also ich fürchte, ich brauche eine native Lösung :-( –
Ah so der Diskriminator ist nicht auf Ihrem Modell. Richtig - das ist normal, wie mit TPH. Sie müssen möglicherweise separate gespeicherte Prozeduren erstellen, und zuordnen Sie jeweils zu jedem B. 'usp_GetDrivers' (Karten zur Sammlung von Treibern),' usp_GetPassengers' (Karten zur Sammlung von Passagieren) Sie könnten eine einzige Methode in Ihrem Objektkontext haben, aber rufen Sie die andere Prozedur auf, je nachdem, was Sie versuchen Abrufen, würde das funktionieren? – RPM1984