Союз не может быть переведен в SQL - PullRequest
1 голос
/ 03 апреля 2019

Я использую 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: The LINQ выражение «Союз ({от компании c в значение (Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1 [MagliteTest.Database.Company]) где ([c] .Id == 10) select [c]}) 'не может быть переведено и будет оценивается на месте. Это исключение может быть подавлено или зарегистрировано передача идентификатора события 'RelationalEventId.QueryClientEvaluationWarning' в метод «ConfigureWarnings» в «DbContext.OnConfiguring» или 'AddDbContext'.

Не поддерживается ли объединение в ядре платформы сущностей?

1 Ответ

2 голосов
/ 03 апреля 2019

Union / Concat перевод сервера (SQL) пока не поддерживается (начиная с EF Core 2.x).

Проблема отслеживается # 6812 Запрос: Перевести IQueryable.Concat / Union / Intersect / Except / etc.на сервер .

По этой ссылке планируется EF Core 3.0.

...