我有一个非常简单的查询:
变量“_dc”是实体框架代码优先数据上下文:
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 或等于”检查不正确,因为它不包括为 NULL 的结果。我将 EF5 RC 与 .NET 4.5 RC 一起使用。
有谁知道我该怎么做?看起来很简单,所以我把头发扯掉了。