首页 > 解决方案 > 联合无法转换为 SQL

问题描述

我正在使用 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 value(Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1[MagliteTest.Database.Company]) where ([ c].Id == 10) select [c]})' 无法翻译,将在本地评估。'。通过将事件 ID 'RelationalEventId.QueryClientEvaluationWarning' 传递给 'DbContext.OnConfiguring' 或 'AddDbContext' 中的 'ConfigureWarnings' 方法,可以抑制或记录此异常。

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

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

解决方案


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

该问题由#6812 Query: Translate IQueryable.Concat/Union/Intersect/Except/etc 跟踪。到服务器

根据该链接,它计划用于 EF Core 3.0。


推荐阅读