EF Core / SQL Server包含的导航属性仅在直接在查询中使用时才起作用

时间:2019-02-26 09:02:21

标签: c# sql-server .net-core ef-core-2.1

我的环境:VS 2017,EF Core(2.1.4),SQL Server 2017,渴望加载

当我这样构建查询时:

var query = MyDbSet.Where(c => c.CustomerId > 2).Include(c => c.Addresses);
var result = await query.FirstOrDefaultAsync();

在结果实体中,我具有所需的导航属性(地址)。 但是当我这样做时:

var intermediate = MyDbSet.Where(c => c.CustomerId > 2);
var query = intermediate.Include(c => c.Addresses);
var result = await query.FirstOrDefaultAsync();

结果不带有正确填充的Addresses属性(它为null)。

我正在开发通用抽象层,并希望允许用户提供包含语句的列表。我想遍历这些语句,并将它们一个接一个地添加。

在我的单元测试环境中,它的工作方式与我期望的一样(使用sqlite),但是在生产环境(SQL Server)中,查询未正确填充。知道这里发生了什么吗?

如何在SQL Server环境中执行以下操作:

foreach (var expression in includes)
    query = query.Include(expression);

希望我的问题有道理。

0 个答案:

没有答案