LINQ to Entities中使用的AddDays在除一个服务器之外的所有服务器中抛出错误

时间:2014-12-10 02:23:06

标签: c# linq linq-to-entities

在开发环境中,以下SQL语句正在运行,但不在任何其他环境中:

  

System.NotSupportedException:LINQ to Entities无法识别方法'System.DateTime AddDays(Double)'方法,并且此方法无法转换为商店表达式。

相关代码:

bool hasSomethinglast14days = (from a in db.someTable
                               where a.SomeIntColumn == someIntVariable
                                  && a.CreateDate >= DateTime.UtcNow.AddDays(-14)
                               select a.someColumn).Any();

1 个答案:

答案 0 :(得分:4)

您正在使用的提供程序无法将AddDays()方法转换为有效的SQL语句。

由于您从数据库中减去的日期无论如何都依赖于数据库中的任何值,只需先进行减法(在查询之外),然后使用结果值:

var pastDate = DateTime.UtcNow.AddDays(-14);

bool hasSomethinglast14days = (from a in db.someTable
                               where a.SomeIntColumn == someIntVariable
                                  && a.CreateDate >= pastDate
                               select a.someColumn).Any();

至于在Dev环境中工作,我没有答案。我很惊讶它。