【发布时间】:2017-10-10 06:38:05
【问题描述】:
我正在开展一个逐步淘汰旧版应用程序的项目。 在此过程中,作为临时解决方案,我们使用数据库与遗留应用程序集成。
旧版应用程序使用具有可序列化隔离级别的事务。 由于数据库与遗留应用程序的集成,我目前最好使用相同的悲观并发模型和可序列化的隔离级别。
这些序列化事务不仅应该包含在 SaveChanges 语句中,还应该包括一些数据读取。
我是这样做的
- 围绕我的 DbContext 创建一个带有序列化隔离级别的 transactionScope。
- 创建 DbContext
- 做一些阅读
- 对对象进行一些更改
- 在 DbContext 上调用 SaveChanges
- 提交事务范围(从而保存更改)
我认为这会将我的整个读取和写入包装到序列化事务中,然后提交。
我认为这是一种悲观并发的方式。
但是,阅读这篇文章,https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application 声明 ef 不支持悲观并发。
我的问题是:
- 答:EF 是否支持我在读写时使用可序列化事务的方式
- B:将读取和写入包装在一个事务中可以保证我的读取数据在提交事务时不会更改。
- C:这是一种悲观并发,对吧?
【问题讨论】:
标签: concurrency entity-framework-6 transactionscope serializable pessimistic-locking