EF 事务 - zLulus/My_Note GitHub Wiki
EF对事务进行了封装:context的saveChange()是有事务性的
添加对System.Transactions的引用,调用TransactionScope类
dbContext.SaveChanges() 向数据库发出指令(sql)
必须保存修改,才会改变数据库数据
User entity = new User(); //新值
using (TravelMobileDataBaseEntities DbManager = new TravelMobileDataBaseEntities())
{
DbManager.Entry<User>(entity).State = EntityState.Modified; //修改
int count= DbManager.SaveChanges(); //执行
}
手动实现(Mysql数据库)
private static MySqlConnection connection;
private static int ExecuteNonQuery(string sql, IEnumerable<MySqlParameter> parameters = null)
{
int n = 0;
using (var cmd = new MySqlCommand(sql, connection))
{
//事务
//https://www.cnblogs.com/lhyqzx/p/6440959.html
var sqlTransaction = connection.BeginTransaction();
cmd.Transaction = sqlTransaction;
if (parameters != null)
{
foreach(var p in parameters)
{
cmd.Parameters.Add(p);
}
}
try
{
n = cmd.ExecuteNonQuery();
sqlTransaction.Commit();
}
catch(Exception ex)
{
sqlTransaction.Rollback();
throw ex;
}
}
return n;
}