Запрет «NOW()» в запросе LINQ to EF

UPDATE: мой первоначальный вопрос был недействителен, потому что я неправильно прочитал журналы MySql. Извините. См. обновленную информацию ниже.

Я использую запрос LINQ:

var homework = ctx.Threads.Where(t => t.ClassName == "10L"
                                   && t.EndDate != null
                                   && t.StartDate <= DateTime.Now
                                   && t.EndDate > DateTime.Now)
                          .OrderByDescending(o => o.EndDate)
                          .FirstOrDefault();

Это создает SQL (MySQL 5.5.14):

SELECT
`Project1`.`id`,
`Project1`.`title`,
`Project1`.`startdate`,
`Project1`.`enddate`,
`Project1`.`class`,
`Project1`.`body`,
`Project1`.`threadtype`
FROM (SELECT
     `Extent1`.`id`,
     `Extent1`.`title`,
     `Extent1`.`startdate`,
     `Extent1`.`enddate`,
     `Extent1`.`class`,
     `Extent1`.`body`,
     `Extent1`.`threadtype`
     FROM
     `threads` AS `Extent1`
     WHERE (((`Extent1`.`class` = '10L')
         AND (`Extent1`.`enddate` IS NOT NULL))
         AND (`Extent1`.`startdate` <= (NOW())))
         AND (`Extent1`.`enddate` > (NOW())))
AS `Project1`
ORDER BY `Project1`.`enddate` DESC
LIMIT 1

Откуда LINQ to EF знает, что нужно использовать NOW()? Конечно, я просто передаю ей обычную структуру DateTimeпо значению?

Если я использую var now = DateTime.Now;, а затем использую now переменная в запросе LINQ, дата передается как литерал. Что происходит?

6
задан James 21 May 2012 в 21:33
поделиться