在自引用表中查找顶级实体
本文关键字:实体 查找 自引用 | 更新日期: 2023-09-27 17:59:47
在实体框架中,如何搜索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; }
}
我想我在这里找到了答案。。。自参考表
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; }
}
最初我试图向子组件添加外键,但实际上我需要在父关系上添加FK。现在我的EF查询如下。。。
return _db.Components.Where(x => x.ParentComponent == null).ToList();