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;
}
不,它只是測試你最喜歡的Sql-Profiler。順便說一句:這與asp.net沒有任何關係 – Carsten
如果您使用的是SQL Server 2008,則可以使用表值參數將該批ID完全提交給存儲過程。 –
@Coenoen你的意思是,它會訪問每個命令的數據庫? – Amumu