在开发环境中,以下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();
答案 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环境中工作,我没有答案。我很惊讶它。