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

时间:2019-02-13 16:47:00

标签: c# entity-framework-core

选择以下示例类:

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。

1 个答案:

答案 0 :(得分:3)

可以直接使用LoadQuery() / IncludeThenInclude方法的组合来代替直接调用Load方法:

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