我有以下LINQ查询
db.Documents.Where(x => x.PublicationId == db.PublicationId &&
x.CancellationDate == null)
结果SQL忽略了CancellationDate子句并因此超时。
我使用其他日期字段尝试了相同的查询,但结果相同。
使用LINQ to SQL执行带日期子句的SQL是否缺少基本的东西?
编辑:
生成的SQL本质上是
exec sp_executesql N'SELECT *
FROM [dbo].[Document] AS [t0]
WHERE [t0].[PublicationId] = @p0',N'@p0 uniqueidentifier',@p0='47892838-9B52-4A4C-B4A2-8302A3FF5F22'
CancellationDate的SQL类型是可为空的DateTime
,DBML属性是Nullable,服务器数据类型DateTime
和类型DateTime
(System.DateTime
)
此外,如果我将LINQ更改为x.CancellationDate < DateTime.Now
,则生成的SQL也不包含此子句。 !x.CancellationDate.HasValue
具有相同的效果