如何在EF Core 6模型中自动包含多个导航属性?
EF Core 6 配置多导航属性自动包含的正确方法
EF Core 6完全支持为实体配置多个自动包含的导航属性,你的配置问题出在链式调用的上下文错误上。
你当前的写法中,调用.Navigation(e => e.ExampleModelRelatedItem1).AutoInclude()后,返回的是导航属性的配置对象(NavigationBuilder),而非实体的配置对象(EntityTypeBuilder),此时继续链式调用.Navigation(...)不会生效,因为上下文已经切换到了单个导航属性上。
正确的配置方式有两种:
方式一:通过OwnerEntityType回到实体配置上下文
modelBuilder.Entity<ExampleModel>() .UseXminAsConcurrencyToken() .Navigation(e => e.ExampleModelRelatedItem1).AutoInclude() .OwnerEntityType // 切换回ExampleModel的实体配置上下文 .Navigation(e => e.ExampleModelRelatedItem2).AutoInclude();
方式二:先保存实体配置对象,再分别配置导航属性
// 先获取ExampleModel的实体配置对象 var exampleEntityConfig = modelBuilder.Entity<ExampleModel>() .UseXminAsConcurrencyToken(); // 分别为每个导航属性开启自动包含 exampleEntityConfig.Navigation(e => e.ExampleModelRelatedItem1).AutoInclude(); exampleEntityConfig.Navigation(e => e.ExampleModelRelatedItem2).AutoInclude();
采用以上任意一种方式配置后,查询ExampleModel时,EF Core会自动包含你指定的两个关联表数据。
内容的提问来源于stack exchange,提问作者Jadamae77
相关产品推荐
相关产品推荐

