从sql数据库中删除超过1天的项目

时间:2011-07-21 06:55:44

标签: c# asp.net

我正在尝试删除超过1天创建的项目,但我的所有项目仍然存在。我确信更改已提交到我的数据库,因为我在其他位置也使用RemoveItem方法。

    using (var db = new CommerceEntities())
    {
        DateTime checkexpiryDate = DateTime.UtcNow.AddDays(-1);
        var itemstoDelete = from c in db.ShoppingCarts
                            where c.DateCreated < checkexpiryDate
                            select new
                                   {
                                       c.CartID,
                                       c.ProductID,
                                       c.Color,
                                       c.Size,
                                   };

        foreach (var item in itemstoDelete)
        {
            try
            {
                //remove item code....
                //RemoveItem(string cartID, int productID, string color, string size)
            }

        public void RemoveItem(string cartID, int productID, string color, string size)
        {
            using (var db = new CommerceEntities())
            {
                ....
                ..
                //db.DeleteObject(myItem);
                ....
                ..
                //db.SaveChanges();
                ...
                ....
                ..
             }
}

3 个答案:

答案 0 :(得分:3)

IMO,首选的方法是TSQL,而不是ORM

declare @when datetime = GETUTCDATE() - 1
delete from ShoppingCarts where DateCreated < @when

通过ADO.NET或任何帮助程序实用程序执行都很简单。

避免通过网络拖动未知数量的数据,并避免在执行多个谨慎操作时进行冗长的事务。

答案 1 :(得分:0)

实体框架对吗?

db.DeleteObject(item);

db.SaveChanges();

http://msdn.microsoft.com/en-us/library/bb386870.aspx

您需要选择一个实际元素,并不清楚您要删除的内容。

答案 2 :(得分:0)

有些明显的问题,但可能是您的问题:您确定数据库中的日期是UTC格式吗?

您可能想尝试的其他事情是在“try”语句中共享代码(我假设某些事情实际发生在那里而您刚刚将其删除)并且还使用SQL事件探查器来查看正在执行的内容在SQL Server上,包括原始select语句和后续deletations。