0

私は非常に単純なクエリを持っています:

変数 '_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 を使用しています。

誰も私がこれを行う方法を知っていますか? とても簡単そうに見えるので、髪をかきむしっています。

4

1 に答える 1

1

型の列をDateTimenull にすることはできません:DateTimeは null 非許容型です。null 許容の場合、型は である必要がありますDateTime?

于 2012-06-26T11:27:47.190 に答える