2

我试图在 MySql 中执行以下操作,但得到一个不支持函数的 linq-to-entities 异常。我尝试使用 SqlFunctions.DateAdd 失败。到目前为止,唯一的解决方案是使用 ToList() 但这将所有这些都带到了我不喜欢的客户端:

var expiredPolcies = context.ApiUsagePolicies
    .Where(u => DateTime.UtcNow > u.UsagePolicyStart.AddSeconds(u.UsagePeriodSeconds));
4

1 回答 1

1

SqlFunctions特定于实体框架和 SQL Server。

SqlMethods特定于 Linq to SQL 和 SQL Server。

如果 MySql 有一组等效的方法,那么您可以使用它。

或者尝试重写您的查询,以便不涉及本地方法。尝试类似:

var expiredPolcies = context.ApiUsagePolicies
    .Where(u => 
        (DateTime.UtcNow - u.UsagePolicyStart).TotalSeconds > u.UsagePeriodSeconds);

这完全取决于您的 Linq 提供程序支持哪些功能。

于 2012-04-11T22:22:20.600 回答