正在实体框架中获取实体的子级
本文关键字:实体 获取 框架 | 更新日期: 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