Sto cercando di filtrare la query iniziale. Ho annidato includere le foglie di un modello. Sto cercando di filtrare in base a una proprietà su una delle inclusioni. Per esempio:
using (var context = new BloggingContext())
{
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ThenInclude(post => post.Author)
.ToList();
}
Come posso anche dire .Where(w => w.post.Author == "me")
?
Infine, questa funzione è stata implementata . Sarà disponibile nella prossima anteprima.
Operazioni supportate:
Where
OrderBy(Descending)/ThenBy(Descending)
Skip
Take
Alcuni esempi di utilizzo (dalla richiesta di funzionalità originale ):
È consentito un solo filtro per navigazione, quindi per i casi in cui è necessario includere più volte la stessa navigazione (ad es. Più ThenInclude nella stessa navigazione) applicare il filtro una sola volta o applicare esattamente lo stesso filtro per quella navigazione.
customers
.Include(c => c.Orders.Where(o => o.Name != "Foo")).ThenInclude(o => o.OrderDetails)
.Include(c => c.Orders).ThenInclude(o => o.Customer)
o
customers
.Include(c => c.Orders.Where(o => o.Name != "Foo")).ThenInclude(o => o.OrderDetails)
.Include(c => c.Orders.Where(o => o.Name != "Foo")).ThenInclude(o => o.Customer)
Un'altra nota importante:
Le raccolte incluse utilizzando le nuove operazioni di filtro sono considerate caricate.
Ciò significa che se il caricamento lento è abilitato, rivolgersi ai customers.Orders
. Orders
dell'ultimo esempio non attiveranno un ricaricamento dell'intera raccolta Orders
.
D'altra parte, se altri Order
vengono caricati nello stesso contesto, molti di essi potrebbero essere aggiunti a un customers.Orders
Raccolta di ordini a causa della correzione della relazione . (Non l'ho ancora verificato, ma sembra inevitabile a causa di come funziona il tracker delle modifiche di EF).
Non fattibile.
C'è una discussione in corso su questo argomento: https://github.com/aspnet/EntityFramework/issues/1833
Suggerirei di cercare una delle librerie di terze parti elencate lì, es .: https://github.com/jbogard/EntityFramework.Filters