正在实体框架中获取实体的子级

本文关键字:实体 获取 框架 | 更新日期: 2023-09-27 18:28:39

我有一个名为的实体

Public  Class Equipment
{
    int Id;
    string EquipmentName;
    int? ParentEquipmentId;
}

因此,在这个实体中,设备可以具有父子关系。我想获取父设备,以及与之相关的设备的所有子设备。

我可以让实体上的ICollection为我取孩子吗??

正在实体框架中获取实体的子级

Public  Class Equipment
{
    int Id;
    string EquipmentName;
    int? ParentEquipmentId;
    virtual Equipment Parent;
    Virtual ICollection<Equipment> Childrens
}

模型绑定器使用fluent api

   this.HasOptional(e => e.Parent)
                .WithMany(e => e.Children)
                .HasForeignKey(m => m.ParentEquipmentId);

这将提取与相关联的记录

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

public virtual ICollection<Equipment> Children { get; set; }

并记住将.Include(q => q.Children)添加到linq查询中以加载子项。

似乎你需要这样的东西(不是精确的语法)

父母和子女财产:

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

并使用您的Parent属性获取该特定父级的所有子级设备:

this.Parent.Children