以这些示例类为例:
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。
而不是直接调用Load
方法,你可以使用Query()
,Include
/ ThenInclude
和Load
方法的组合:
entry.Reference(x => x.PartStock)
.Query()
.Include(x => x.Part)
.Load();