entity-framework - 两个或多个读取之间的 EF 一致性
问题描述
在Microsoft 关于 EF 的文档中的此页面中,字面意思是
实体框架不会在事务中包装查询
如果我是对的,这意味着 sql 读取并不包含在事务中,因此我们代码中的每个选择都是独立执行的。但是如果是这样的话,我们能保证两次读取彼此之间是一致的吗?在典型情况下,如果 A 和 B 之间的传输在读取之间开始(在不同的连接中),是否有保证 A 的加载量和 B 的加载量的总和将是正确的(在某些连接中) A的读音和B的读音?Entity Framework 能否以某种方式解决这种情况?
解决方案
EF 中的内置解决方案是客户端乐观并发。更新时,EF 将构建一个查询,以确保要更新的行在读取后没有更改。
配置为并发令牌的属性用于实现乐观并发控制:每当在 SaveChanges 期间执行更新或删除操作时,数据库上的并发令牌的值都会与 EF Core 读取的原始值进行比较。
如果值匹配,则操作可以完成。如果值不匹配,EF Core 会假定另一个用户执行了冲突操作并中止当前事务。
您还可以选择任何隔离级别的事务,这可能会提供类似的保护。或者对目标数据库使用带有锁定提示的原始 SQL查询。
推荐阅读
- python-3.x - Python Socket 反向代理
- python - 删除小数点前的空格
- css - 带有 Css 的 Instagram 个人资料布局(样式化组件)
- javascript - 如何使用`h`创建一个非空评论节点?
- excel - Google 表格 - 对关键字列表执行通配符搜索
- java - 如何在heroku google chrome上部署selenium java
- mysql - 在 laravel 的查询中查询相关记录并从中进行一些计算
- message - 即使应用程序关闭,我如何收到消息
- ios - SwiftUI 模型绑定仅在第一次通过时更新值
- reactjs - React JS 向 Springboot Rest Server 发送 post 请求并得到错误