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

kEp*_*pEx 3 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();
Run Code Online (Sandbox Code Playgroud)

Gra*_*ICA 5

您使用的提供程序无法将该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();
Run Code Online (Sandbox Code Playgroud)

至于它在你的开发环境中工作,我没有答案。我很惊讶它确实如此。