实体框架:中断运行 SaveChanges
我有一个独特的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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的 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.