Entity framework EF 6.0按日期时间获取
我想在datetime之前阅读表格。如果我使用这个:Entity framework EF 6.0按日期时间获取,entity-framework,Entity Framework,我想在datetime之前阅读表格。如果我使用这个: (from x in Db.Table where x.Date.Value == DateTime.Now select x).ToList(); (from x in Db.Table where DbFunctions.TruncateTime(x.Date) == DateTime.Now select x).ToList(); 我的代码引发EntityCommandExecutionException: 向OLE DB提供参数
(from x in Db.Table where x.Date.Value == DateTime.Now select x).ToList();
(from x in Db.Table where DbFunctions.TruncateTime(x.Date) == DateTime.Now select x).ToList();
我的代码引发EntityCommandExecutionException:
向OLE DB提供参数信息时出错
提供者
所以我用这个:
(from x in Db.Table where x.Date.Value == DateTime.Now select x).ToList();
(from x in Db.Table where DbFunctions.TruncateTime(x.Date) == DateTime.Now select x).ToList();
但是速度非常慢(大约40秒)。在我的表格中大约有50万条记录
感谢您的建议先定义now属性,然后按如下方式查询:
var now = DateTime.Now;
var list = Db.Table.Where(e=>e.Date == now).ToList();
或:
如果我在SQL Management studio中执行此查询
select*from Table where Date='2016-08-15'
,速度非常快(2秒),这只是一个输入错误,在我的代码中,您是否已正确尝试在两侧使用DbFunctuins.TruncateTime
?例如DbFunctions.TruncateTime(x.Date)=DbFunctions.TruncateTime(DateTime.Now)
是的,速度也非常慢。。EF生成此查询:SELECT*FROM(SELECT*FROM[dbo].[Table]AS[Table])AS[Extent1],其中((convert(datetime2,convert(varchar(255),[Extent1].[Date],102),102))=(convert(datetime2,convert(varchar(255),[Extent1].[Date],102),102))或((convert(datetime2,convert(varchar(255),[extt1].[Date],102),102),102)是NULL)和(convert(datetime2,convert(varchar(255),SysDateTime(),102),102)是NULL))
这是throw EntityCommandExecutionException:向OLE DB提供程序提供参数信息时发生故障。。。