私は非常に単純なクエリを持っています:
変数 '_dc' は、Entity Framework Code First Data Context です。
var maxLockTime = DateTime.UtcNow.AddMinutes(-1);
var record = _dc.DMPs
.Where(x =>
x.MappedId == null
&& x.Ignored == false
&& (x.ConcurrencyLockDate.Equals(null) || x.ConcurrencyLockDate < maxLockTime))
.OrderBy(x => x.id).Skip(skip).Take(1).ToList()
.Select(x => new
{
x.id,
x.Ignored,
x.MappedId,
x.SourceData
}).FirstOrDefault();
次の SQL where 句を生成します:-
WHERE ([Extent1].[MappedId] IS NULL)
AND (0 = [Extent1].[Ignored])
AND ([Extent1].[ConcurrencyLockDate] < @p__linq__1)
ご覧のとおり、「ConcurrencyLockDate」の「null または equals」チェックは、NULL である結果が含まれていないため、正しくありません。私は .NET 4.5 RC で EF5 RC を使用しています。
誰も私がこれを行う方法を知っていますか? とても簡単そうに見えるので、髪をかきむしっています。