mysql ef 事务_MySql EF事务using不会自动 Rollback的bug

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)

{

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值