首页 技术交流 EF core 自动包含导航的模型配置 Navigation AutoInclude 正文

EF core 自动包含导航的模型配置 Navigation AutoInclude

发布日期:2022年01月13日 10:55        阅读次数:838

 自动包含导航的模型配置

 备注

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 并不会阻止包含它们。 它们仍将包含在查询结果中。

                                                         

评论:

共 0 页 0 条记录,当前为第 1 页