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


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

  


免責聲明!

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



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