c# - 如果数据库连接丢失,是否提交了 SaveChange 事务?
问题描述
我们已经实现了一个 WordAddin 并使用 EF6 连接到 oracle 数据库。使用插件,用户可以从数据库中加载文档。编辑文档后,用户关闭文档。我们使用 DocumentBeforeClose-Event 来更新数据库中的文档。只有一个用户可以在数据库中编辑和保存文档。问题是,有时在 oracle 中存在行锁争用。据我所知,行锁意味着一个事务正在更新行,而另一个事务正在等待。是否有可能,如果 SaveChanges 期间的数据库连接丢失,则不会提交事务?或者如果在 SaveChange 期间 word 意外关闭?
用word关闭文档后,每个代码都关闭了word,这可能是问题吗?
解决方案
保存时连接丢失时,事务不太可能提交。
EF 在执行时启动一个事务,SaveChanges
并在所有数据库交互的最后提交它。只有在保存数据后立即启动另一个数据库交互时,才会在保存成功时注意到丢失的连接。
您需要的是重试策略,以确保不会丢失宝贵的修改。
推荐阅读
- terraform - 地形 | depends_on 导致增量更新的序列问题
- wordpress - Wordpress REST API 创建页面
- ruby-on-rails - 从方法返回的对象的索引方法 - Elasticsearch
- apache - apache virtualhost(windows)不改变DocumentRoot
- html - 在 Mattable 中循环 DataSource 时,标题也在重复
- css - 在 AWS Amplify React UI 中覆盖 CSS
- php - 将 XML 标记解析为数组,不依赖于 XML 结构
- python - H3 六边形不匹配
- javascript - Apollo 客户端:使用修改过的变量重新获取数据,useQuery 还是 useLazyQuery?
- c# - 如果创建不成功,Web API 控制器“创建”操作应该抛出什么类型的异常?