C# EF core 5如何在不包含的情况下填充导航属性

C# EF core 5如何在不包含的情况下填充导航属性,c#,.net,asp.net-core,entity-framework-core,C#,.net,Asp.net Core,Entity Framework Core,除非使用Include(),否则无法自动填充导航属性。如何在没有Include()的情况下自动填充导航属性 我正在使用EF core 5.0 Class客户 { [关键] public int MappingID{get;set;} 公共字符串映射名称{get;set;} } 阶级秩序 { [关键] 公共int-orderID{get;set;} 公共字符串名称{get;set;} public int MappingID{get;set;} [ForeignKey(nameof(Mapping

除非使用
Include()
,否则无法自动填充导航属性。如何在没有
Include()
的情况下自动填充导航属性

我正在使用EF core 5.0

Class客户
{
[关键]
public int MappingID{get;set;}
公共字符串映射名称{get;set;}
}
阶级秩序
{
[关键]
公共int-orderID{get;set;}
公共字符串名称{get;set;}
public int MappingID{get;set;}
[ForeignKey(nameof(MappingID))]
公共虚拟客户客户映射{get;set;}
}
这不管用
customerMapping
返回为
null
-

\u context.Order.FirstOrDefault(x=>x.orderID==1);
这很有效<代码>自定义映射已填充-

\u context.Order.Include(y=>y.customerMapping).FirstOrDefault(x=>x.orderID==1);

加载父级时,将始终包括一个拥有的类型。此功能通过在模型中设置属性来实现,您可以手动为任何导航设置属性

modelBuilder.Entity()
.Navigation(d=>d.customerMapping)
.AutoInclude(真);

OP没有提到任何关于自有类型的内容。没有,但这与我发现该功能的方式有关,我认为它可能会帮助其他人发现答案。这很好,但如果订单和客户是一对多的呢?我知道这不太可能,但我真的不知道。问题是加载没有包含的导航属性。这是有可能的,即使是对一个或多个。但是,如果您不总是需要这些数据,显然会对性能产生影响。@atiyar我必须同意Jeremy的观点。自EFC5.0(甚至在5.0之前,通过公共元数据API)以来,
AutoInclude
功能就正式存在了。但是由于一些未知的原因,除了API本身,文档中没有提到它。这就是为什么没有多少人知道,而且它在某些场景中是有用的(并且在他们的GitHub中被要求)。并且可以在每个查询中关闭,类似于全局过滤器。