0

以下のようなコードがあるとします。知りたいです 実行されなかった場合db.savechanges()、通常、キャンセルするコードを書く必要がありますdb.DeployPackages.Add(package)か?

HotDeployDbContext db = null;

    using (db = new HotDeployDbContext())
    {
        DeployPackage package = new DeployPackage();
        db.DeployPackages.Add(package);

        //determine if save package to db based on some condition.
        if (.....)
        {
            db.SaveChanges();
        }
        else
        {
            //how to cancel the db.DeployPackages.Add(package);
        }
    }

編集済み

Dbcontext複数のテーブルにデータを追加するなど、1 つの で多くのことを行うことがあります。一部のデータを削除するか、データを更新します。SaveChangesしかし、何らかのビジネス条件に基づいて実行前にこれらをキャンセルする必要がある場合はどうすればよいでしょうか? どうすればこれを作ることができますか。ありがとう。

4

2 に答える 2

2

コードがusingブロックを終了すると、すべてのデータが破棄され、保存されません。

Microsoftの公式のスタンスは、変更を取り消す場合は、DbContextを破棄するというものです。オブジェクトを削除する良い方法はありません。

于 2012-10-23T03:25:18.763 に答える
2

いいえ。
を呼び出さない限りSaveChanges()、すべての変更はそのインスタンスにのみ影響しDbContextます。

于 2012-10-23T03:01:38.347 に答える