集合的 EF Core 集合加载 ..
EF Core Collection Load .. of a Collection
使用 EF 核心 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
幸运的是你有一个选择。除了直接调用 Load
,您还可以使用 Query
方法并应用任意数量的 Include
/ ThenInclude
。
对于您的示例,它将是这样的:
context.Entry(A).Collection(a => a.Bees)
.Query()
.Include(b => b.Seas).ThenInclude(c => c.Sigh)...
.Load();
使用 EF 核心 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幸运的是你有一个选择。除了直接调用 Load
,您还可以使用 Query
方法并应用任意数量的 Include
/ ThenInclude
。
对于您的示例,它将是这样的:
context.Entry(A).Collection(a => a.Bees)
.Query()
.Include(b => b.Seas).ThenInclude(c => c.Sigh)...
.Load();