实体框架核心:从子访问父

Rob*_*ste 6 c# relationship entity-framework-core ef-core-2.2

可能是一个愚蠢的问题,但我在这里有点困惑。

我有一个包含孩子列表的父实体。

public class Parent
{
    public int Id { get; set; }

    public List<Child> Children { get; set; }
}

public class Child
{
    public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

EFcore 将ParentId在表中创建一个作为外键Child

现在,假设我想检索所有具有特定父级的孩子,我该怎么做?该ParentId不是可用的Child对象。

因此,我不能做这样的事情:

var result = model.Child.Where(child => child.ParentId == 3);
Run Code Online (Sandbox Code Playgroud)

我可以将ParentId属性添加到实体中的子项,但我真的不希望手动分配此属性。如果我仅通过指定 getter 将其设置为只读,则迁移将不再起作用。

Iva*_*oev 5

EF Core 允许您使用EF.Property方法访问LINQ to Entities 查询中关联的影子属性

解决实体实例上的给定属性。当您想要在 LINQ 查询中引用影子状态属性时,这很有用。目前该方法只能在LINQ查询中使用,不能用于其他场景中访问分配给属性的值。

您只需要知道名称和类型 - 在您的情况下,它们是“ParentId”和int?(可选):

var result = model.Child.Where(child => EF.Property<int?>(child, "ParentId") == 3);
Run Code Online (Sandbox Code Playgroud)