Ich habe eine Entität A
mit einer einfachen Navigationseigenschaft B
. Für jede gegebene Instanz von A
erwarten wir mehrere verwandte tausend Instanzen von B
.EF baut EntityCollection, aber ich (glaube ich) möchte IQueryable
Es gibt keinen Fall, in dem ich so etwas nennen:
foreach(var x in A.B) { ... }
Stattdessen bin ich nur Interesse an einem solchen Aggregat Operationen tun als
var statY = A.B.Where(o => o.Property == "Y");
var statZ = A.B.Where(o => o.CreateDate > DateTime.Now.AddDays(-1));
Soweit ich das beurteilen kann, EF instanziiert Tausende von Referenzen auf B und führt diese Operationen im Speicher durch. Dies liegt daran, dass Navigationseigenschaften EntityCollection verwenden. Stattdessen möchte ich, dass diese Abfragen möglichst auf SQL-Ebene ausgeführt werden.
Meine derzeitige Vermutung ist, dass Navigationseigenschaften möglicherweise nicht der richtige Weg zu gehen sind. Ich bin nicht an EF gebunden, also bin ich offen für andere Ansätze. Aber ich wäre sehr daran interessiert, den richtigen Weg zu kennen, dies unter EF möglichst zu tun.
(Ich verwende EF4.)
Würde dies funktionieren, wenn A.Where (a => a.B.CreateSourceQuery(). Any (o => o.Property == "Y")); oder wird in diesem Fall ein LINQ JOIN empfohlen? –