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;
}

示例代码

MysqlUseEFDemo

参考资料

EF中的事务处理的初步理解

⚠️ **GitHub.com Fallback** ⚠️