基于一些周期性并发传入的数据,我正在执行一个操作,该操作会将新行插入表中,或者更新同一个表中的现有行。它是插入还是更新行取决于现有行的状态。因此,此操作的结果将受此操作的先前运行的影响,并影响后续运行。我需要使用事务或锁定或其他方法确保原子性/隔离性。 Entity Framework似乎有很多选择和注意事项(我也是一个全面的数据库资源的新手),我不知道我应该朝哪个方向前进。 TransactionScope,BeginTransaction,环境事务? Serializable或RepeatableRead? SaveChanges和AcceptAllChanges?我甚至需要做特别的事情吗?可以添加新行的事实使我特别担心幻影行,尽管我几乎不明白这意味着什么。任何关于这个问题的指导将不胜感激。实体框架中的并发,原子和隔离
1
A
回答
1
报价:
悲观并发(锁定)
如果您的应用程序确实需要防止 并发场景数据的意外丢失,一种方法是使用数据库锁。 这被称为悲观并发。例如,在从数据库中读取 行之前,您请求锁定为只读或更新 访问。如果您锁定一行以进行更新访问,则不允许其他用户锁定该行以进行只读或更新访问,因为 他们将获得正在更改过程中的数据的副本。 如果您将一行锁定为只读访问权限,其他人也可以将其锁定为 只读访问权限,但不能用于更新。管理锁具有一些缺点。编程可能很复杂。它需要大量的数据库管理资源,并且随着应用程序用户数量的增加(即,其 不能很好地扩展),会导致性能问题 。由于这些原因,并不是所有的数据库管理系统都支持悲观并发。实体框架提供了 没有内置的支持,本教程不会告诉你如何执行它 。
乐观并发
的替代悲观并发是乐观并发。 乐观并发意味着允许发生并发冲突, 然后在适当的情况下做出适当的反应。例如,John运行 “部门编辑”页面,将英文 部门的预算金额从$ 350,000.00更改为$ 100,000.00。 (约翰·管理一个 竞争的部门,要腾出资金用于自己的 部门。)*
有在本教程中这两种模式的代码示例。
相关问题
- 1. 实体框架并发
- 2. 实体框架ObjectContext:并发
- 3. 实体框架6和悲观并发
- 4. 实体框架死锁和并发
- 5. 实体框架游离对象合并
- 6. 实体框架和并行
- 7. 实体框架分离实体和相关实体
- 8. 分离实体框架poco和objectcontext
- 9. Xamarin原生实体框架
- 10. 原始SQL实体框架
- 11. 实体框架的悲观并发性
- 12. 实体框架的悲观并发性
- 13. 使用离子框架的原生Dropdown
- 14. 如何实现Moles隔离框架?
- 15. 实体框架 - 乐观并发问题
- 16. 并发性问题实体框架
- 17. 实体框架7脚手架原名
- 18. DB2实体框架事务隔离“WITH UR”
- 19. 实体框架5加实体和子实体与
- 20. 实体框架的交易和SQL Azure的默认隔离级别
- 21. 实体框架中的递归实体分离
- 22. 在实体框架中保存分离的实体6
- 23. 具有多个表/实体的实体框架并发
- 24. SQL Server的“用户架构分离”和实体框架问题
- 25. 从实体框架中的父实体获取子实体c#
- 26. 与GMAP和离子框架
- 27. 实体框架插入子实体
- 28. 实体框架 - 添加子实体
- 29. 实体框架:删除子实体
- 30. 实体框架 - 保存子实体