Entity framework 4 Linq到实体查询中的日期时间操作
运行此代码:Entity framework 4 Linq到实体查询中的日期时间操作,entity-framework-4,linq-to-entities,Entity Framework 4,Linq To Entities,运行此代码: public bool CheckTime(DateTime date, int UserID, int TotalTimeMin) { using (var context = new myDB()) { var assginments = from c in context.Assignments.Where(x=>(x.AssignmentDateTime
public bool CheckTime(DateTime date, int UserID, int TotalTimeMin)
{
using (var context = new myDB())
{
var assginments = from c in context.Assignments.Where(x=>(x.AssignmentDateTime < date && x.AssignmentDateTime.Value.AddMinutes(TotalTimeMin) > date) ||
(x.AssignmentDateTime < date.AddMinutes(TotalTimeMin))) select c;
if(assginments != null) return false;
else return true;
}
}
TotalTimeMin为int。我不确定是什么原因导致:
AssignmentDateTime是DateTime吗?也许这就是问题所在?使用
EntityFunctions.AddMinutes
(需要EF 4):
public bool CheckTime(DateTime日期、int UserID、int TotalTimeMin)
{
使用(var context=new myDB())
{
var assginments=context.Assignments
.其中(x=>(x.AssignmentDateTime<日期
&&EntityFunctions.AddMinutes(x.AssignmentDateTime,TotalTimeMin)>日期)
||(x.AssignmentDateTime
请注意,
assignments
将永远不会为空(但它可能为空——测试assignments.Any()
)。问题在于LINQ to Entities不知道如何将DateTime.AddMinutes转换为数据存储语言(可能是SQL)。也许这会给你指明正确的方向。我需要更多的时间来真正为您找到解决方案。谢谢,我实际上已经玩了一点,您可能是对的,无论我做什么,都不能在查询中使用AddMinnute(尽管我可以轻松地用SQL编写它…)谢谢。(我省略了ToList并检查了count…但是EntityFunctions对我来说是新的,这就是我想要的。显然EntityFunctions已经过时了。现在可以使用DbFunctions.AddMinutes()(EF 6.x)。
LINQ to Entities does not recognize the method 'System.DateTime AddMinutes(Double)' method, and this method cannot be translated into a store expression.
public bool CheckTime(DateTime date, int UserID, int TotalTimeMin)
{
using (var context = new myDB())
{
var assginments = context.Assignments
.Where(x=>(x.AssignmentDateTime < date
&& EntityFunctions.AddMinutes(x.AssignmentDateTime,TotalTimeMin) > date)
|| (x.AssignmentDateTime < date.AddMinutes(TotalTimeMin)));
if(assginments != null) return false;
else return true;
}
}