单库
注意事务一定要是同一个db对象才会有效果
using (SqlSugarClient db = SugarDao.GetInstance())//开启数据库连接 { db.CommandTimeOut = 30000;//设置超时时间 try { db.BeginTran();//开启事务 //db.BeginTran(IsolationLevel.ReadCommitted);+3重载可以设置事世隔离级别 db.CommitTran();//提交事务 } catch (Exception ex) { db.RollbackTran();//回滚事务 throw ex; } }
多库简单模式事务
using (ISqlSugarClient idb = DbRepository.GetInstance(DbType.MySql, SugarDao.MySqlConnString)) { try { idb.BeginTran(); var list = idb.Queryable<Student>().First(); idb.CommitTran(); } catch (Exception) { idb.RollbackTran(); throw; } }
多库灵活模式事务
如果不跨库事务可以用下面方法
using (MyRepository db = new MyRepository()) { try { db.Database.BeginTran(); //当前连接的sqlconn1 var list = db.Database.Queryable<Student>().First(); db.Database.CommitTran(); } catch (Exception) { db.Database.RollbackTran(); throw; } //切换mysql db.SetCurrent(db.MySqlConn1); try { db.Database.BeginTran(); var list2 = db.Database.Queryable<Student>().First(); db.Database.CommitTran(); } catch (Exception) { db.Database.RollbackTran(); throw; } }
跨库事务用法
using (TransactionScope scope = new TransactionScope()) { var list = db.Database.Queryable<Student>().First(); //切换mysql db.SetCurrent(db.MySqlConn1); var list2 = db.Database.Queryable<Student>().First(); }
2016 © CodeIsBug.comApache Licence 2.0