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