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)
您使用的提供程序无法将该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)
至于它在你的开发环境中工作,我没有答案。我很惊讶它确实如此。