更新: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
値で通常の構造体に渡しているだけですか?
LINQクエリで変数を使用var now = DateTime.Now;
してから使用すると、日付はリテラルとして渡されます。now
どうしたの?