EF to MySql一般都是用using最后Commit,一直以为最后没Commit,当using调用Dispose会自动Rollback,没想到这儿有个坑,mysql有个bug并不会Rollback,事务也不会关闭,所以再次BeginTransaction就会报An erro ...
EF to MySql一般都是用using最后Commit,一直以为最后没Commit,当using调用Dispose会自动Rollback,没想到这儿有个坑,mysql有个bug并不会Rollback,事务也不会关闭,所以再次BeginTransaction就会报An error occurred while starting a transaction on the provider connection. See the inner exception for details.错误详情是Nested transactions are not supported.
所以用 EF to MySql一定要记得try catch Rollback
例子如下
using (var db = new OtoRCEntities()) { using (var tran = db.Database.BeginTransaction()) { try { db.Database.ExecuteSqlCommand("update xxx"); tran.Commit(); } catch (Exception)//这儿try catch 是用来报错了没有Commit,按理说using后应该自动Rollback { } } } using (var db = new OtoRCEntities()) { using (var tran = db.Database.BeginTransaction())//到这儿就会报错 { try { db.Database.ExecuteSqlCommand("update xxx"); tran.Commit(); } catch (Exception) { } } }
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:MySql EF事务using不会自动 Rollback的bug
关键词:MYSQL
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。