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?

War es hilfreich?

Lösung

Warum Sie eine Erweiterungsmethode auf IQueryable genannt ApplyBaseEntryFilter () nicht gelten, die diese Filter anwenden würden und geben eine IQueryable .

Dies ist ein Beispiel dafür, wie Linq-Abfrage Fragmente wieder zu verwenden. Mit Erweiterungsmethoden auf IQueryable ist eine gute Möglichkeit, Abfragen wieder zu verwenden, wie Sie rneed Neve sollten und Einfügen von Abfragefragmenten um Ihre Anwendung zu kopieren, die Hoffnung, das hilft.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top