在Entity Framework中,如何搜索EF中顶级对象?
如果我有一组具有子组件的子组件。这些子组件可以放置在更大的组件中。
在一个现实世界的例子中:假设我们用计算机构建一个机柜,计算机有部件。如何找到未安装在机柜中的计算机,或者可能未安装在计算机中的部件?
public class Component
{
public int Id { get; set; }
public string Model { get; set; }
public string PartId { get; set; }
public DateTime Manufactured { get; set; }
public string SerialNumber { get; set; }
public string ProductType { get; set; }
public string Description { get; set; }
public virtual List<Component> SubComponents { get; set; }
}
答案 0 :(得分:3)
我想我在这里找到了答案...... Self Referencing Tables
public class Component
{
[Key]
public int Id { get; set; }
public string Model { get; set; }
public string PartId { get; set; }
public DateTime Manufactured { get; set; }
public string SerialNumber { get; set; }
public string ProductType { get; set; }
//Added this...
public int? ParentComponentId { get; set; }
[ForeignKey("ParentComponentId")]
public virtual Component ParentComponent { get; set; }
public virtual List<Component> SubComponents { get; set; }
public string Description { get; set; }
}
最初我试图向SubComponents添加一个外键,但实际上我需要在父关系上使用FK。现在我的EF查询看起来像这样......
return _db.Components.Where(x => x.ParentComponent == null).ToList();