Entity framework 列表的备选方案。包含在EF中

Entity framework 列表的备选方案。包含在EF中,entity-framework,Entity Framework,由于下面的EF代码,我有循环参考。我有一张父母表,分别有两个孩子和他们的孙子。当我读到一些关于导航属性的内容时,是否有其他方法可以使用Include,它在每个子对象中包含父对象,从而导致序列化出现循环引用问题 错误消息: 序列化“Product”类型的对象时检测到循环引用 这部分仅用于获取检索,我不需要将父引用返回到每个子对象。我在内部进行调试,发现在每个子级中,都有父级引用 var query = db.Products.Include(c => c.ProductTriggers.

由于下面的EF代码,我有循环参考。我有一张父母表,分别有两个孩子和他们的孙子。当我读到一些关于导航属性的内容时,是否有其他方法可以使用Include,它在每个子对象中包含父对象,从而导致序列化出现循环引用问题

错误消息: 序列化“Product”类型的对象时检测到循环引用

这部分仅用于获取检索,我不需要将父引用返回到每个子对象。我在内部进行调试,发现在每个子级中,都有父级引用

  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; }
}