У меня есть эта строка, которая работает до тех пор, пока я не включил RelationalEventId.QueryClientEvaluationWarning.
Здесь, скажем, я хочу отсортировать результаты (клиентов) по дате их последнего заказа.
.OrderByDescending(x=>x.orders.Max(y=>y.CreateDate))
После настройки контекста следующим образом я понял, что Макс () не конвертируется в TSql.
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.ConfigureWarnings(warning =>
{
warning.Throw(RelationalEventId.QueryClientEvaluationWarning);
});
}
Ошибка:
InvalidOperationException: Error generated for warning 'Microsoft.EntityFrameworkCore.Query.QueryClientEvaluationWarning: The LINQ expression 'Max()' could not be translated and will be evaluated locally.
Я полагаю, что локальный расчет максимума противоречит лучшей производительности.Есть ли способ рассчитать макс на SQL Server?