gpt4 book ai didi

c# - EF 延迟加载 : Add item to navigation property without loading it

转载 作者:太空宇宙 更新时间:2023-11-03 12:37:54 25 4
gpt4 key购买 nike

假设有以下数据模型:

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。

如何在不触发导航属性的延迟加载并且不传输不需要的数据的情况下将树添加到花园中?

最佳答案

如果您首先使用数据库,那么您唯一的选择就是关闭整个上下文的延迟加载。 ctx.Configuration.LazyLoadingEnabled = false

如果使用代码优先,请确保标记您的 ICollection<Tree> Trees不是 virtual然后仅针对此集合禁用延迟加载。

关于c# - EF 延迟加载 : Add item to navigation property without loading it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40208888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com