2010-05-19 34 views
0

我有一個獨特的ObjectContext,我在其上執行SaveChanges()。此操作需要一些時間(〜60秒)。 此操作在一個線程中執行。實體框架:中斷正在運行SaveChanges

我的用戶在屏幕上有一個「取消」按鈕。
我能夠阻止線程,但如果SaveChanges()已經開始,我無法找到任何取消它。
事實上,我發現沒有辦法訪問底層事務(我也有一個隔離級別的問題:這個操作鎖定了數據庫中幾乎所有的表,所以應用程序不能被其他用戶使用)。

如果我關閉了底層連接,它會起作用嗎? EF將無法發送Rollback指令,但我猜數據庫會執行它,不是嗎?

我已經看到我可以使用TransactionScope,但它需要訪問DTC,而且在編輯服務器/網絡配置時,我的主機並不是真正的高性能。
因此,如果存在「實體框架」解決方案,我更喜歡那個。

回答

0

是你的SaveChanges()保存多個更新?是否可以更新然後單獨保存每個?

然後,如果你在一個事務中,並且用戶取消,你的保存會有更多的粒度。

+0

但我將無法回滾已插入/更新的值... – 2010-05-19 14:05:20