EF Core Collection Load .. of Collection

c# entity-framework-core navigation-properties

使用EF Core 1.1.0

我有一個模型,其集合本身就有集合。

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;}
}

現在.. A是巨大的,99%的時間我不關心B,所以它不會被加載。如果我加載它,那麼它將是這樣的:

context.A.Include(a=>a.Bees).ThenInclude(b=>b.Seas).ThenInclude(c=>c.Sigh)...

現在讓我們說我已經加載了A並且1%恰好讓我關心B.我們還沒有延遲加載,但最後一個版本確實給了我們明確的加載。真棒。

context.Entry(A).Collection(a=>a.Bees).Load();

問題似乎是沒有辦法在B中包含額外的集合?除了用.Include.ThenInclude.ThenInclude.Etc重新加載A,我別無選擇嗎?

一般承認的答案

幸運的是你有一個選擇。您可以使用Query方法並根據需要應用盡可能多的Include / ThenInclude ,而不是直接調用Load

對於您的樣本,它將是這樣的:

context.Entry(A).Collection(a => a.Bees)
    .Query()
    .Include(b => b.Seas).ThenInclude(c => c.Sigh)...
    .Load();


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因