联合不能转换为SQL

时间:2019-04-03 12:05:32

标签: entity-framework-core azure-sql-database .net-core-2.2

我正在使用EFCore 2.2.3,并且已禁用本地评估。

我有以下查询

var query1 = companyContext.Companies.Where(c => c.Name == name);
var query2 = companyContext.Companies.Where(c => c.Id == 10);

如果我自己执行它们,它们将正常工作。

await query1.ToListAsync();
await query2.ToListAsync();

但是,如果我尝试

var result = await query1.Union(query2).ToListAsync();

我收到以下错误:

  

InvalidOperationException:生成警告错误   'Microsoft.EntityFrameworkCore.Query.QueryClientEvaluationWarning:   LINQ表达式'Union({from Company c in   值(Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1 [MagliteTest.Database.Company])   其中([c] .Id == 10)select [c]})'无法翻译,将被翻译成   本地评估。”。可以抑制或记录此异常   将事件ID'RelationalEventId.QueryClientEvaluationWarning'传递给   'DbContext.OnConfiguring'中的'ConfigureWarnings'方法或   “ AddDbContext”。

实体框架核心不支持联合吗?

1 个答案:

答案 0 :(得分:2)

目前尚未支持

Union / Concat服务器(SQL)转换(自EF Core 2.x起)。

#6812 Query: Translate IQueryable.Concat/Union/Intersect/Except/etc. to server已跟踪该问题。

根据该链接,它计划在EF Core 3.0中使用。