假设以下数据模型:
class Garden
{
int ID;
ICollection<Tree> Trees;
string Address;
}
class Tree
{
public int ID;
public float Size;
}
让我们种一些树木:
var gardens = dbContext.Gardens.Take(10).ToList();
foreach (var g in gardens)
g.Trees.Add(new Tree());
但是现在,由于延迟加载,每次引用g.Trees
都会触发数据库查询。在取花园时我可以做.Include(garden => garden.Trees)
,但后来我正在转移所有现有的树木。
我可以在Tree中创建一个GardenID列,然后只需将Tree添加到我的DbContext而不触及导航属性。但现在我需要传递我的DbContext。
如何在不触发导航属性的延迟加载的情况下将树添加到花园中,并且不传输不需要的数据?
答案 0 :(得分:1)
如果您首先使用数据库,那么您只能选择关闭整个上下文的延迟加载。
ctx.Configuration.LazyLoadingEnabled = false
如果使用Code First,请确保标记ICollection<Tree> Trees
不是virtual
,然后仅为此集合禁用延迟加载。