检查col [类型为datetime]的col是否为null或小于另一个文本日期时间

时间:2012-06-26 09:08:42

标签: c# .net entity-framework .net-4.5 entity-framework-5

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

变量'_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或equals”检查是不正确的,因为它不包括NULL为NULL的结果。我正在使用带有.NET 4.5 RC的EF5 RC。

有谁知道我怎么做到这一点?这看起来很简单,所以我把头发撕掉了。

1 个答案:

答案 0 :(得分:1)

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