Хотя я согласен с нечувствительностью к регистру Linq to SQL
, но реальная проблема, похоже, связана с оценкой запроса Linq
ядром EF.
В общем случае вам нужно изучить Client vs. Server Evaluation
. Entity Framework Core пытается оценить запрос на сервере в максимально возможной степени. Существует некоторый сценарий ios, в котором проекции клиента верхнего уровня могут быть оценены на стороне клиента, но из-за проблем с производительностью Entity Framework Core блокирует такую оценку клиента и вызывает исключение времени выполнения.
Вы все равно можете запускать как есть без исключения с оценкой на стороне клиента, если ваше требование соответствует следующим двум правилам:
- Объем данных невелик, поэтому оценка клиент не сильно снижает производительность.
- Используемый оператор LINQ не имеет трансляции на стороне сервера.
В демонстрационных целях я использовал приведенный ниже пример кода, используя AsEnumerable()
где значения - это Dbset
в моем случае:
var orders = _context.Values.AsEnumerable()
.Where(x => x.Name.StartsWith("S", System.StringComparison.OrdinalIgnoreCase))
.OrderBy(n => n.Name)
.ToList();
Поскольку ядро EF всегда запускает запросы на стороне сервера, всегда убедитесь, что вы переписываете запросы, чтобы EF мог запускать их на стороне сервера по возможности!