2011-08-28 115 views
0

SqlTransaction是否執行批處理操作而不重複訪問數據庫?我不知道,因爲SqlTransaction似乎將一堆SQL命令組合在一起並最終提交到數據庫。但是,每個命令都會運行ExecuteNonQuery(),這會導致數據庫訪問。使用ADO.NET批量操作

public List<Task> SubmitSheet(List<Task> tList) 
{ 
    SqlConnection conn = A2.Controller.Utils.conn; 
    SqlTransaction submitTransaction = null; 
    try 
    { 
     conn.Open(); 
     submitTransaction = conn.BeginTransaction(); 
     foreach (Task t in tList) { 
      SqlCommand submitCmd = new SqlCommand("SubmitTask", conn); 
      submitCmd.CommandType = CommandType.StoredProcedure; 
      submitCmd.Transaction = submitTransaction; 
      submitCmd.Parameters.Add("@tid", SqlDbType.Int).Value = t.Id; 
      submitCmd.ExecuteNonQuery(); 
     } 
     submitTransaction.Commit(); 
    }   
    finally { 
     if (conn.State == ConnectionState.Open) conn.Close(); 
    } 
    return tList; 
} 
+4

不,它只是測試你最喜歡的Sql-Profiler。順便說一句:這與asp.net沒有任何關係 – Carsten

+0

如果您使用的是SQL Server 2008,則可以使用表值參數將該批ID完全提交給存儲過程。 –

+0

@Coenoen你的意思是,它會訪問每個命令的數據庫? – Amumu

回答