首页 > 解决方案 > 如果数据库连接丢失,是否提交了 SaveChange 事务?

问题描述

我们已经实现了一个 WordAddin 并使用 EF6 连接到 oracle 数据库。使用插件,用户可以从数据库中加载文档。编辑文档后,用户关闭文档。我们使用 DocumentBeforeClose-Event 来更新数据库中的文档。只有一个用户可以在数据库中编辑和保存文档。问题是,有时在 oracle 中存在行锁争用。据我所知,行锁意味着一个事务正在更新行,而另一个事务正在等待。是否有可能,如果 SaveChanges 期间的数据库连接丢失,则不会提交事务?或者如果在 SaveChange 期间 word 意外关闭?

用word关闭文档后,每个代码都关闭了word,这可能是问题吗?

标签: c#oracleentity-frameworkrowlocking

解决方案


保存时连接丢失时,事务不太可能提交。

EF 在执行时启动一个事务,SaveChanges并在所有数据库交互的最后提交它。只有在保存数据后立即启动另一个数据库交互时,才会在保存成功时注意到丢失的连接。

您需要的是重试策略,以确保不会丢失宝贵的修改。


推荐阅读