如果数据库连接丢失,是否提交SaveChange事务?

时间:2019-06-07 09:09:19

标签: c# oracle entity-framework rowlocking

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

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

1 个答案:

答案 0 :(得分:1)

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

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

您需要的是retry policy,以确保不会丢失宝贵的修改。