Entity Framework: wie ein Basistyp von L2E zurückzukehren
-
01-07-2019 - |
Frage
Unter Berücksichtigung der folgenden Architektur:
- ein Basisobjekt 'Entity'
- ein abgeleitetes Objekt 'Entry: Basis'
- und ein weiteres abgeleitetes Objekt 'CancelledEntry: Eintrag'
In EntitySQL ich folgendes schreiben:
[...] where it is of (only MyEntities.Entry) [...]
nur Objekte vom Typ Eintrag und keine Entity oder CancelledEntry zurückzukehren.
In LINQ to SQL, wird der folgende Befehl zurückgeben Objekte vom Typ Ein- und CancelledEntry.
EntityContext.EntitySet.OfType<Entry>()
Was ist die Syntax / Funktion nur Objekte vom Typ Eintrag zurückzukehren zu benutzen?
Lösung
Warum Sie eine Erweiterungsmethode auf IQueryable
Dies ist ein Beispiel dafür, wie Linq-Abfrage Fragmente wieder zu verwenden. Mit Erweiterungsmethoden auf IQueryable
Andere Tipps
Ok, ich habe eine Teillösung gefunden:
EntityContext.EntitySet.OfType<Entry>().Where( obj => !(obj is CancelledEntry) )
Das ist ganz aber schrecklich, denn wenn ich ein neues abgeleitetes Objekt zu erstellen, muß ich in allen Abfragen gehen und speziell eine Bedingung hinzufügen, um es zu entfernen.
Es muss eine bessere Lösung sein