LINQ: Сравнение времени ожидания в DbSet <Model>.Where () - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь запросить с 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: процесс ожидания был прерван

( Внутреннее исключение в переводе с немецкого )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...