Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 4 Linq到实体查询中的日期时间操作_Entity Framework 4_Linq To Entities - Fatal编程技术网

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;
        }
    }