我在EF核心中加载实体时有一些问题,不确定我是否以错误的方式使用它,或者这是否是错误?
?例如:
public class Root
{
public Contained ContainedReference { get; set; }
}
public class Contained
{
public Contained AnotherContainedReference { get; set; }
public System.Collections.Generic.ICollection<Root> Roots { get; set; } //Backreference
}
我加载实体的代码如下:
public override ICollection<Package> GetAll()
{
return Context.Set<Root>().Include(_=>_.ContainedReference);
}
在我的情况下,我想加载这些结构:root.ContainedReference
我得到的是:root.containedReference.AnotherContainedReference
我如何告诉EF核心应该加载词根,包括包含的重新,而不是包含的重新中的另一个重新反向?
如果我现在尝试更新(dbcontext.update(root((,它将失败,因为迭代时有一个循环。根和ef core会抛出
之类的东西。无法跟踪实体类型" root"的实例,因为已经跟踪具有键值'{id}'的另一个实例。连接现有实体时,请确保仅附加具有给定键值的一个实体实例。
由于反应(包含的根,不应加载(
预先感谢您
chris
我想我在https://github.com/aspnet/entityframeworkcore/issues/11564
上找到了答案。我只是清除了导航属性,现在它正在工作,但没有结束解决方案。也许他们会在不久的将来实施这样的功能。