Entity framework 列表的备选方案。包含在EF中
由于下面的EF代码,我有循环参考。我有一张父母表,分别有两个孩子和他们的孙子。当我读到一些关于导航属性的内容时,是否有其他方法可以使用Include,它在每个子对象中包含父对象,从而导致序列化出现循环引用问题 错误消息: 序列化“Product”类型的对象时检测到循环引用 这部分仅用于获取检索,我不需要将父引用返回到每个子对象。我在内部进行调试,发现在每个子级中,都有父级引用Entity framework 列表的备选方案。包含在EF中,entity-framework,Entity Framework,由于下面的EF代码,我有循环参考。我有一张父母表,分别有两个孩子和他们的孙子。当我读到一些关于导航属性的内容时,是否有其他方法可以使用Include,它在每个子对象中包含父对象,从而导致序列化出现循环引用问题 错误消息: 序列化“Product”类型的对象时检测到循环引用 这部分仅用于获取检索,我不需要将父引用返回到每个子对象。我在内部进行调试,发现在每个子级中,都有父级引用 var query = db.Products.Include(c => c.ProductTriggers.
var query = db.Products.Include(c => c.ProductTriggers.Select(b => b.ProductTriggerItems))
.Include(d => d.ProductsExtra.Select(e => e.ProductAllotments.Select(m => m.ProductAllotmentDetails))).AsNoTracking();
return query.ToList();
产品类别
public partial class Product
{
public Product()
{
this.ProductExtras = new HashSet<ProductExtra>();
this.ProductTriggers = new HashSet<ProductTrigger>();
}
public int ProductID { get; set; }
public string ProductCode { get; set; }
public string ProductName { get; set; }
public virtual ICollection<ProductProduct> ProductExtras { get; set; }
public virtual ICollection<ProductTrigger> ProductTriggers { get; set; }
}
你能把模型的代码放进去吗?如果也生成了一个,你能提供错误吗?我创建数据传输对象来序列化,简化数据库模型,消除你看到的循环引用试试这篇文章:我看到了,但是有没有一个有两个孩子的父母的例子,每个孩子都有孩子?你能把模型的代码?如果也生成了一个,您能提供错误吗?我创建数据传输对象来序列化,以简化数据库模型并消除您看到的循环引用试试这篇文章:我已经看到了,但是对于一个有两个孩子的父代,以及每个孩子都有孩子的父代,有没有示例?
public partial class ProductExtra
{
public ProductExtra()
{
this.ProductAllotments = new HashSet<ProductAllotment>();
}
public int ProductExtraID { get; set; }
public int ProductID { get; set; }
public virtual Product Product { get; set; }
public virtual ICollection<ProductAllotment> ProductAllotments { get; set; }
}
public partial class ProductAllotment
{
public ProductAllotment()
{
this.ProductAllotmentDetails = new HashSet<ProductAllotmentDetail>();
}
public int ProductAllotmentID { get; set; }
public int ProductExtraID { get; set; }
public virtual ProductExtra ProductExtra { get; set; }
public virtual ICollection<ProductAllotmentDetail> ProductAllotmentDetails { get; set; }
}
public partial class ProductTrigger
{
public ProductTrigger()
{
this.AddOnTriggerItems = new HashSet<ProductTriggerItem>();
}
public int ProductTriggerID { get; set; }
public int ProductID { get; set; }
public virtual Product Product { get; set; }
public virtual ICollection<ProductTriggerItem> ProductTriggerItems { get; set; }
}
public partial class ProductTriggerItem
{
public int ProductTriggerItemID { get; set; }
public int ProductTriggerID { get; set; }
public virtual ProductTrigger ProductTrigger { get; set; }
}