私はユニークな を持っておりObjectContext
、その上で を実行しSaveChanges()
ます。この操作には時間がかかります (~60 秒)。この操作はスレッドで実行されます。
ユーザーの画面に「キャンセル」ボタンがあります。
スレッドを停止することはできますが、スレッドSaveChanges()
が既に開始されている場合は、キャンセルする方法が見つかりません。
実際、基になるトランザクションにアクセスする方法が見つかりませんでした (分離レベルの問題もあります。この操作はデータベース内のほぼすべてのテーブルをロックするため、他のユーザーはアプリケーションを使用できません)。
基になる接続を閉じても機能しますか? EF は命令を送信できませんがRollback
、データベースはとにかくそれを実行すると思います。
使用できることは確認しましTransactionScope
たが、DTC にアクセスする必要があり、サーバー/ネットワーク構成の編集に関してホストのパフォーマンスがあまり高くありません。
したがって、「Entity Framework」ソリューションが存在する場合は、それを好むでしょう。