Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取实体框架中实体的子级_C#_Entity Framework - Fatal编程技术网

C# 获取实体框架中实体的子级

C# 获取实体框架中实体的子级,c#,entity-framework,C#,Entity Framework,我有一个实体叫做 Public Class Equipment { int Id; string EquipmentName; int? ParentEquipmentId; } 因此,在这个实体中,设备可以具有父级和子级关系。 我想获取父设备以及与之相关的设备的所有子设备 我可以通过实体上的ICollection获取子对象吗?是的,您需要在对象中包含子对象集合: public virtual ICollection<Equipment> Children

我有一个实体叫做

Public  Class Equipment
{
    int Id;
    string EquipmentName;
    int? ParentEquipmentId;
}
因此,在这个实体中,设备可以具有父级和子级关系。 我想获取父设备以及与之相关的设备的所有子设备


我可以通过实体上的ICollection获取子对象吗?

是的,您需要在对象中包含子对象集合:

public virtual ICollection<Equipment> Children { get; set; }
公共虚拟ICollection子项{get;set;}

请记住在linq查询中添加
。Include(q=>q.Children)
,以加载子项。

似乎需要类似的内容(而不是精确的语法)

父和子属性:

public Equipment Parent 
{
    get 
    {
        return dataContext.DbSet<Equipment>().SingleOrDefault(e=>e.Id == this.ParentEquipmentId);
    }
}

public IEnumerable<Equipment> Children 
{
    get 
    {
        return dataContext.DbSet<Equipment>().Where(e=>e.ParentEquipmentId == this.Id);
    }
}

这将拉取与

可能重复的do i have write fluent api相关联的记录,因为这不起作用。您可以,但不需要。请尝试先正确加载实体。然后,当它工作时,在查询中添加子集合和“Include”以加载子集合。还记得在构造函数中初始化集合。如果这不能回答您的问题,请提供更多详细信息,以便我更好地理解。如何获取子资产的所有子资产使用var allSubchild=this.Children.SelectMany(c=>c.Children);
this.Parent.Children
Public  Class Equipment
{
    int Id;
    string EquipmentName;
    int? ParentEquipmentId;
    virtual Equipment Parent;
    Virtual ICollection<Equipment> Childrens
}
   this.HasOptional(e => e.Parent)
                .WithMany(e => e.Children)
                .HasForeignKey(m => m.ParentEquipmentId);