是否可以使用EntityEntry.Reference加载嵌套的导航属性?

问题描述 投票:1回答:1

以这些示例类为例:

class TemplatePart
{
    public PartStock stock {get; set;}
    ...other POCOs
}

class PartStock
{
    public Part part {get; set;}
    ...other POCOs
}

class Part
{
    public PartName name {get; set;}
    ...other POCOs
}

现在,假设我已经拥有了TemplatePart的实体。我可以做这个:

var entry = context.Entry(templatePart);
entry.Reference(x => x.PartStock).Load();

这将加载PartStock的导航属性。但是我该怎么做:

entry.Reference(x => x.PartStock.Part).Load();

这产生了一个例外:

表达式'x => x.PartStock.Part'不是有效的属性表达式。表达式应该表示一个简单的属性访问:'t => t.MyProperty'。参数名称:propertyAccessExpression

是否有一些替代品仍然使用我已经拥有的entry?如果我不需要,我不想再使用Include重新加载整个东西。

我正在使用EntityFramework Core 2。

c# entity-framework-core
1个回答
4
投票

而不是直接调用Load方法,你可以使用Query()Include / ThenIncludeLoad方法的组合:

entry.Reference(x => x.PartStock)
    .Query()
    .Include(x => x.Part)
    .Load();
© www.soinside.com 2019 - 2024. All rights reserved.