Я пытаюсь преобразовать этот код из хранимой процедуры в запрос «LINQ to Entities»:
select * from myTable
where venue_date + start_time <= @EndDate
and dateadd(minute, duration * 24 * 60, venue_date + start_time) >= @StartDate
Как видите, есть некоторые манипуляции с датами. Подобные вещи не будут работать, потому что такие функции, как .AddHours()
не поддерживаются:
where b.Venue_Date.Value.AddHours(b.Start_Time.Value.Hour) <= request.EndDate
Нечто подобное тоже не сработает. Ошибка говорит о том, что не поддерживаются конструкторы с параметрами:
where new DateTime(b.Venue_Date.Value.Year, b.Venue_Date.Value.Month,
b.Venue_Date.Value.Day, b.Start_Time.Value.Hour, b.Start_Time.Value.Minute,
b.Start_Time.Value.Second) <= request.EndDate
Кажется, что Entity Framework ОЧЕНЬ ограничивает работу с датами. Я думаю, мне придется использовать процедуру. Следующая проблема состоит в том, чтобы выяснить, как создать процедуру, которая может заполнять несколько связанных объектов.