Я пытаюсь запросить с EF core 2.2 и Linq базу данных SQL.
В базе данных столбец времени R00090
имеет тип float
.
Используя dotnet ef dbcontext scaffold
, я создал DbContext
и класс модели. Все работает как надо, кроме следующей проблемы.
Фрагмент кода # 1: работа в течение 2 мс
var time = (DateTime.Now - new TimeSpan(1, 0, 0)).ToOADate();
var test = context.TbMlr21P07
.OrderByDescending(e => e.R00090)
.Where(e => e.R00090 > (time))
.ToList();
Фрагмент кода # 2: получить время ожидания через 30 с
var test = context.TbMlr21P07
.OrderByDescending(e => e.R00090)
.Where(e => e.R00090 > ((DateTime.Now - new TimeSpan(1, 0, 0)).ToOADate()))
.ToList();
Я не понимаю, почему «вычисление времени» в выражении Linq приводит к превышению времени ожидания, а при использовании переменной - нет? Разве «вычисление времени» не должно оцениваться как с переменной, а затем будет создан запрос?
Я думаю, что оба примера кода одинаковы по поведению, но фрагмент # 2 генерирует исключение тайм-аута:
System.Data.SqlClient.SqlException: 'Истекло время ожидания. Время ожидания истекло до завершения операции, или сервер не отвечает. ''
Внутреннее исключение:
Win32Exception: процесс ожидания был прерван
( Внутреннее исключение в переводе с немецкого )