联合不能转换为SQL

Pet*_*ter 2 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);
Run Code Online (Sandbox Code Playgroud)

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

await query1.ToListAsync();
await query2.ToListAsync();
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试

var result = await query1.Union(query2).ToListAsync();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

InvalidOperationException:生成警告错误'Microsoft.EntityFrameworkCore.Query.QueryClientEvaluationWarning:LINQ表达式'Union({来自公司c的值(Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1 [MagliteTest.Database.Company]))其中([[ c] .Id == 10)选择[c]})'无法翻译,将在本地进行评估。通过将事件ID'RelationalEventId.QueryClientEvaluationWarning'传递到'DbContext.OnConfiguring'或'AddDbContext'中的'ConfigureWarnings'方法,可以抑制或记录此异常。

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

Iva*_*oev 5

Union/ Concat服务器(SQL)转换尚不支持(从EF Core 2.x开始)。

#6812查询已跟踪该问题:翻译IQueryable.Concat / Union / Intersect / Except / etc。到服务器

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

  • 谢谢,我想我必须在 3.0 版本之前启用本地评估,这似乎是一个巨大的打击。 (2认同)