[英]How to load Entities with an defined Graph in EF Core?
我在EF Core中加载实体时遇到一些问题,不确定是否以错误的方式使用它,或者这是否是错误?
例如:
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 Core它应该加载包含ContainedReference的Root,而不要包含ContainedReference中的AnotherContainedReference?
如果我现在尝试更新(DBContext.Update(Root)),它将失败,因为在对Contained.Roots和EF Core进行迭代时存在一个循环
无法跟踪实体类型“ Root”的实例,因为已经跟踪了另一个键值为“ {Id}”的实例。 附加现有实体时,请确保仅附加一个具有给定键值的实体实例。
由于存在反向引用(Roots in Contained,因此不应加载)
先感谢您
克里斯
我想我在https://github.com/aspnet/EntityFrameworkCore/issues/11564找到了答案
我只是清除导航属性,现在它可以正常工作,但没有最终解决方案。 也许他们会在不久的将来实现这种功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.