我有一个名为
的实体Public Class Equipment
{
int Id;
string EquipmentName;
int? ParentEquipmentId;
}
拥有这个实体,设备可以有父子关系。 我想获取父设备以及与之相关的设备的所有子设备。
我可以在实体上使用ICollection来获取孩子吗?
答案 0 :(得分:2)
Public Class Equipment
{
int Id;
string EquipmentName;
int? ParentEquipmentId;
virtual Equipment Parent;
Virtual ICollection<Equipment> Childrens
}
模型绑定器使用流畅的api
this.HasOptional(e => e.Parent)
.WithMany(e => e.Children)
.HasForeignKey(m => m.ParentEquipmentId);
这将拉出与
相关的记录答案 1 :(得分:0)
是的,您需要在对象中包含儿童的集合:
public virtual ICollection<Equipment> Children { get; set; }
并记得在您的linq查询中添加.Include(q => q.Children)
以加载子项。
答案 2 :(得分:0)
似乎你需要这样的东西(不是精确的语法)
父母与子女的财产:
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