mysql - 具有隔离级别但无法正常工作的实体框架 BeginTransaction
问题描述
我正在使用带有EF6的 mysql 连接器来构建数据库。
处理并发更新的方法发生了。
客户端 A更新行
客户端 B进来更新同一行
客户端 B需要等待客户端 A提交他的更新。代码:
using (myEntities db = new myEntities ()) { db.Database.Connection.Open(); try { using (var scope = db .Database.BeginTransaction(System.Data.IsolationLevel.Serializable)) { { var test = db.customer_table.Where(x => x.id == 38).FirstOrDefault(); test.bank_holder_name = "CLIENT A"; db.SaveChanges(); scope.Commit(); } } } catch (Exception ex) { throw; } }
在调试时,当客户端 A 执行此 SaveChanges() 步骤时,我故意暂停。但是客户端 B 可以在没有任何等待的情况下完成他的更新。这里有人遇到这个问题吗?
P/S:我做了很多关于实体框架并发问题的阅读和试验,比如;
a) 使用 row_version 进行乐观锁定(如果时间戳不够唯一以捕获并发,则无法正常工作)
b) 事务范围(仍与上述结果相同)
这里有人知道在实体框架中停止并发吗?提前致谢!
解决方案
推荐阅读
- javascript - 如何使用 Jest 和 vue-cli 更新快照
- javascript - 如何使用 node/express 将表单数据存储在数据库中并同时邮寄到电子邮件 ID
- asp.net-mvc - 在 mvc razor 视图中 DisplayFor 的确切用途是什么?
- php - Laravel:如果在模型类中编写了任何函数......如果我们通过视图 Blade.php 调用它,该函数将如何表现
- machine-learning - 如何提高深度学习 LSTM 算法中模型的准确性?
- php - 如何使用 foreach 循环在引导轮播中显示图像?
- postgresql - 在 PostgreSQL 的 SQL 函数中将元素转换为用户定义的类型
- python - 回车不保持新的光标位置
- javascript - vue-router.esm.js?fe87:565 Uncaught TypeError: Cannot redefine property: $router
- node.js - 如何在node.js和mongodb中使用正则表达式过滤计数位数的数据?