Utilizzo di EF Core 1.1.0
Ho un modello che ha collezioni che hanno collezioni.
public class A {
public string Ay {get;set;}
public List<B> Bees {get;set;}
}
public class B {
public string Be {get;set;}
public List<C> Seas {get;set;}
}
public class C {
public string See {get;set;}
public bool InDark {get;set;}
public List<D> Sigh {get;set;}
}
Ora .. A è enorme, e il 99% delle volte non mi interessa di B, quindi non viene caricato. Se lo avessi caricato, sarebbe qualcosa di simile:
context.A.Include(a=>a.Bees).ThenInclude(b=>b.Seas).ThenInclude(c=>c.Sigh)...
Ora diciamo che ho già caricato A e che l'1% per me mi interessa di B. Non abbiamo ancora il caricamento lazy, ma l'ultima versione ci ha dato il caricamento esplicito. Eccezionale.
context.Entry(A).Collection(a=>a.Bees).Load();
Il problema sembra essere che non c'è un modo per includere le raccolte aggiuntive all'interno di B? Non ho altra scelta che ricaricare A con .Include.ThenInclude.ThenInclude.Etc?
Fortunatamente hai un'opzione. Invece di chiamare direttamente Load
, puoi usare il metodo Query
e applicare il numero di Include
/ ThenInclude
come desideri.
Per il tuo campione, sarebbe qualcosa di simile a questo:
context.Entry(A).Collection(a => a.Bees)
.Query()
.Include(b => b.Seas).ThenInclude(c => c.Sigh)...
.Load();