0

私はユニークな を持っておりObjectContext、その上で を実行しSaveChanges()ます。この操作には時間がかかります (~60 秒)。この操作はスレッドで実行されます。

ユーザーの画面に「キャンセル」ボタンがあります。
スレッドを停止することはできますが、スレッドSaveChanges()が既に開始されている場合は、キャンセルする方法が見つかりません。
実際、基になるトランザクションにアクセスする方法が見つかりませんでした (分離レベルの問題もあります。この操作はデータベース内のほぼすべてのテーブルをロックするため、他のユーザーはアプリケーションを使用できません)。

基になる接続を閉じても機能しますか? EF は命令を送信できませんがRollback、データベースはとにかくそれを実行すると思います。

使用できることは確認しましTransactionScopeたが、DTC にアクセスする必要があり、サーバー/ネットワーク構成の編集に関してホストのパフォーマンスがあまり高くありません。
したがって、「Entity Framework」ソリューションが存在する場合は、それを好むでしょう。

4

1 に答える 1

0

SaveChanges()は複数の更新を保存していますか?それぞれを個別に更新して保存することは可能ですか?

次に、トランザクション内にいて、ユーザーがキャンセルした場合、保存の粒度が高くなります。

于 2010-05-19T13:33:11.103 に答える