Dapper事務操作


1、報錯信息:

    如果分配給命令的連接位於本地掛起事務中,ExecuteNonQuery 要求命令擁有事務。命令的 Transaction 屬性尚未初始化。

出現這種原因是在執行Execute語句時,沒有把得到的IDbTransaction傳入Execute方法中。如下代碼,在執行第二個Execute時就報上述錯誤。

IDbTransaction transaction = dbConnection.BeginTransaction();
    
dbConnection.Execute(sql1,null,transaction);

dbConnection.Execute(sql2);
transaction.Commit();

2、事務操作例子:

    注意要加上dbConnection.Open(),因為在BeginTransaction時要求連接是打開的。而在不使用事務的時候,簡單的增刪改查可以不用這一句,因為Execute方法中有Open。否則會報錯:無效操作。連接被關閉。

public ActionResult Tran()
        {
            string sql1 = "insert into UserInfo values('zhao',23,'上海')";
            string sql2 = "insert into Teacherinfo values('tt1',40','sdfsdfs')";
            using (IDbConnection dbConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
            {
                dbConnection.Open();
                IDbTransaction transaction = dbConnection.BeginTransaction();
                try
                {
                    dbConnection.Execute(sql1,null,transaction);

                    dbConnection.Execute(sql2,null,transaction);
                    transaction.Commit();
                }
                catch (Exception exception)
                {

                    transaction.Rollback();
                    return Content("Fail");
                }


            }
            return Content("OK");
        }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM