1

Entity Framework を使用して多くの変更をデータベースに保存するサービスがいくつかあります。

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 に答える