自动包含导航的模型配置
备注
EF Core 6.0 中已引入此功能。
可使用 AutoInclude
方法配置每次从数据库加载实体时要包含的模型中的导航。 这与在结果中返回实体类型的每个查询中使用导航指定 Include
具有相同的效果。 以下示例演示如何配置要自动包含的导航。
modelBuilder.Entity<Theme>().Navigation(e => e.ColorScheme).AutoInclude();
完成上述配置后,运行如下查询将为结果中的所有主题加载 ColorScheme
导航。
using (var context = new BloggingContext())
{ var themes = context.Themes.ToList(); }
此配置应用于结果中返回的每一个实体(无论它在结果中的显示方式如何)。 这意味着,如果一个实体因为使用导航而出现在结果中,则对另一个实体类型或自动包含配置使用 Include
时,它将为其加载所有自动包含的导航。 同一规则可扩展到在实体的派生类型上配置为自动包含的导航。
如果对于特定查询,你不想通过导航加载相关数据(该导航在模型级别配置为自动包含),可在查询中使用 IgnoreAutoIncludes
方法。 使用此方法将停止加载用户配置为自动包含的所有导航。 运行如下所示的查询会从数据库返回所有主题,但不会加载 ColorScheme
,即使它被配置为自动包含导航也是如此。
using (var context = new BloggingContext())
{ var themes = context.Themes.IgnoreAutoIncludes().ToList(); }
备注
对从属类型的导航也按照约定配置为自动包含,并且使用 IgnoreAutoIncludes
API 并不会阻止包含它们。 它们仍将包含在查询结果中。