实体框架:中断运行 SaveChanges

发布于 2024-09-01 23:53:44 字数 459 浏览 3 评论 0原文

我有一个独特的ObjectContext,我在其上执行SaveChanges()。此操作需要一些时间(约 60 秒)。 这个操作是在一个线程中执行的。

我的用户屏幕上有一个“取消”按钮。
我能够停止线程,但如果 SaveChanges() 已经启动,我无论如何也找不到取消它的方法。
事实上,我找不到访问底层事务的方法(我还有一个隔离级别问题:此操作锁定了数据库中的几乎所有表,因此其他用户无法使用该应用程序)。

如果我关闭底层连接会起作用吗? EF 将无法发送 Rollback 指令,但我猜数据库无论如何都会执行它,不是吗?

我发现我可以使用 TransactionScope,但它需要访问 DTC,而且我的主机在编辑服务器/网络配置时性能不佳。
因此,如果存在“实体框架”解决方案,我更喜欢那个。

I have a unique ObjectContext, on which I perform a SaveChanges(). This operation takes some time (~60 seconds).
This operation is executed in a thread.

My user have a "Cancel" button on the screen.
I'm able to stop the thread, but if the SaveChanges() has already started I can't find anyway to cancel it.
In fact I found no way to access the underlying transaction (I also have an Isolation level issue : this operation locks almost all tables in database, so the application cannot be used by other users).

Would it work if I closed the underlying connection ? The EF won't be able to send a Rollback instruction but I guess the database would perform it anyway, no ?

I've seen that I could use TransactionScope but it needs to access DTC and my host is not really performant when it comes to edit server/network configuration.
So if a "Entity Framework" solution exist I'd prefer that one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悟红尘 2024-09-08 23:53:44

您的 SaveChanges() 是否保存了多个更新?是否可以更新然后单独保存?

然后,如果您处于交易中,并且用户取消了,您的保存就会有更多的粒度。

is your SaveChanges() saving multiple updates? Is it possible to update then save each individually?

Then, if you are inside a transaction, and user cancels, you'd have more granularity in your saves.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文