1

我有几个服务使用实体框架来保存数据库中的许多更改。

当它们在 IIS 中执行时,它运行得非常快,但是当我处于调试模式并在我的开发计算机上运行它时,它需要几分钟,我看到所有其余查询都崩溃了(即使它们不是在我正在更新的同一张桌子上)。

所以我认为我没有按照我应该的方式这样做 8-)

我的代码是这样的:

public void CancelOrders(ObservableCollection<long> idOrders)
    {
        Model.Entities context = new Model.Entities();

        var query = from orders in context.ORDERS.Include("CUSTOMERS")
                    where idOrders.Contains(orders.id_order)
                    select orders;

        foreach (var order in query)
        {
            foreach (var customer in order.CUSTOMERS)
            {
                customer.served = false;
            }
            context.ORDERS.DeleteObject(order);
        }

        context.SaveChanges();

    }

当它运行 context.SaveChanges() 时问题就来了...它曾经是大约 2000 行并且需要一段时间才能完成(同时 NOBODY 可以使用相同的数据库)。

我应该做一个更频繁的 context.SaveChanges() 吗?我可以使用不同的方法吗?

提前致谢。

4

1 回答 1

3

如果您不需要删除是事务性的,那么您可以SaveChanges()通过将其添加到外部foreach循环或内部和外部循环的末尾来更频繁地调用。

我怀疑您至少希望删除订单并将客户更新为事务性的,因此我建议仅将其放在外foreach循环中。

于 2012-08-22T12:52:39.443 回答