3

テーブルで 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) select a);

しかし、「LINQ to Entities はメソッド 'System.TimeSpan Subtract(System.DateTime)' メソッドを認識しないため、このメソッドをストア式に変換できません」というエラー メッセージが表示されます。

4

2 に答える 2

2

EF はサポートしていませんDateTime - DateTime

于 2012-04-23T23:03:03.993 に答える
0

この回答に従って System.Data.Entity.DbFunctions.DiffHoursを使用する必要があります。

https://stackoverflow.com/a/9860858/345659

var expired = (from a in db.Baskets
               where DbFunctions.DiffHours(DateTime.Now, a.DateCreated) > 3
               select a);
于 2015-10-12T02:41:41.607 に答える