optimieren ef Include
Abfragen mit Where
Klauseln
Herausforderung: effizient zu verwandte Entitäten mithilfe der EF -Methode abrufen, während gleichzeitig diese verwandten Entitäten mithilfe einer Include
-Klausel filtern, kann schwierig sein. Naive Ansätze führen häufig zu mehreren Datenbankfahrten und potenziellen Zuordnungsfehlern. Where
Lösungsstrategien:
1. EF6 -Problemumgehung (Projektion und Fixup):
Für Entity Framework 6 und frühere Versionen beinhaltet eine Problemumgehung die Deaktivierung des faulen Ladens und die Verwendung einer Projektion, um nur die erforderlichen Daten auszuwählen. Relationship Fixup übernimmt dann die Assoziation.
Context.Configuration.LazyLoadingEnabled = false; var buses = Context.Busses.Where(b => b.IsDriving) .Select(b => new { b, Passengers = b.Passengers.Where(p => p.Awake) }) .AsEnumerable() .Select(x => x.b) .ToList();
, wobei Buses
wahr ist, und nur der IsDriving
, wobei Passengers
für jeden Bus zutrifft. Entscheidend ist, dass die Beziehungsfindung die Verbindung zwischen Awake
und seiner gefilterten Bus
Passengers
wiederhergestellt hat.
2. Nutzung von Bibliotheken von Drittanbietern:
Bibliotheken wie EntityFramework.DynamicFilters
und EntityFramework.Filters
bieten einen saubereren Ansatz. Mit diesen Tools können Sie globale Filter definieren, die automatisch für Ihre Abfragen gelten, einschließlich verschachtelter Eigenschaften, und vereinfacht den Filterprozess innerhalb von Include
Anweisungen.
3. EF Kernüberlegungen:
EF Core bietet globale Abfragebilter, ihre derzeitigen Funktionen sind jedoch begrenzt. Sie arbeiten hauptsächlich an der Stammentität und unterstützen die Filternavigationseigenschaften innerhalb von Anweisungen nicht direkt. Zukünftige Versionen können diese Funktionalität verbessern. Include
Wichtige Überlegungen:
LazyLoadingEnabled = false
Das obige ist der detaillierte Inhalt vonWie kann ich effizient EF `include 'mit einer' Wo` -Klausel für verwandte Einheiten verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!