c# - 请调试错误消息。 DbArithmeticExpression 参数必须具有数字通用类型

标签 c# linq entity-framework

我试图删除表中所有超过 3 小时的项目,但出现以下错误...

DbArithmeticExpression 参数必须具有数字通用类型。

// Method to clean items in baskets table which are over 3 hours old.
public void CleanBasket()
{
    var expired = (from a in db.Baskets
                   where (DateTime.Now - a.DateCreated).TotalHours > 3  select a);
    foreach (Basket basket in expired) db.DeleteObject(expired);
    db.SaveChanges();
}

我以前从未见过这个错误,请问有人可以帮我调试吗?

仅供引用,我也试过... var expired = (from a in db.Baskets where (DateTime.Now.Subtract(a.DateCreated).Hours > 3) 选择 a);

但我收到错误消息“LINQ to Entities 无法识别‘System.TimeSpan Subtract(System.DateTime)’方法,并且无法将此方法转换为存储表达式。”

最佳答案

EF 不支持 DateTime - DateTime

关于c# - 请调试错误消息。 DbArithmeticExpression 参数必须具有数字通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10289455/

相关文章:

c# - 连接子句中的可选条件 - Linq

c# - Entity Framework Core - 将小数精度和小数位数设置为所有小数属性

c# - 如何强制使用 .Include 查询 Entity Framework 6 进行外部连接

c# - 结构大小未反射(reflect) C# 中的正确字节数

c# - DataGridView 在排序时崩溃?

c# - LINQ 数据表返回 0 而不是空合并

c# - Azure 表 : How to write a range query to filter on partition key

c# - 如何从母版页更新内容页?

c# - 应用暂停时保存状态的位置

c# - 使用 EF 更新 PK 时出错