0

我有一个非常简单的查询:

变量“_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 一起使用。

有谁知道我该怎么做?看起来很简单,所以我把头发扯掉了。

4

1 回答 1

1

类型的列DateTime不能为空:DateTime是不可为空的类型。如果它可以为空,则类型应该是DateTime?.

于 2012-06-26T11:27:47.190 回答