2

在 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; }
}
4

1 回答 1

3

我想我在这里找到了答案......自参考表

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();
于 2013-02-17T03:02:50.057 回答