DbConnection dbc = database.CreateConnection(); DbTransaction dbtt = null; try { dbc.Open(); dbtt = dbc.BeginTransaction(); DbCommand storedProcCommand = this.database.GetStoredProcCommand("sp_cc_Category_Create"); storedProcCommand.Connection = dbc;//肯定了command和dbc的關係,肯定關係之後要使用這個dbc開始的事務即dbtt storedProcCommand.Transaction = dbtt;//這裏就指定了使用的事務 storedProcCommand.ExecuteNonQuery(); //這裏不要忘記或者寫錯 //假如又建立了一個command也是使用的這個連接,也要使用這個事務,還要注意執行 DbCommand storedProcCommandnew = this.database.GetStoredProcCommand("sp_cc_Category_update"); storedProcCommandnew .Connection = dbc;//同上 storedProcCommandnew .Transaction = dbtt;//同上 //storedProcCommand .ExecuteNonQuery(); //若是錯寫成上面的commond會報一樣的錯誤 storedProcCommandnew .ExecuteNonQuery(); //這裏若是是複製過來的不要寫錯哦, dbtt.Commit(); } catch { dbtt.Rollback(); } finally { if (dbc.State == ConnectionState.Open) dbc.Close(); }