You would have to test to be sure, and the local conditions on your server could definitely play a big role, but I'd start with something like:
Code:
public function DoBigHonkingUpdate(List<DataItems> data)
{
using (DbConnection conn = WhateverFactoryIamUsingToday.GetConnection());
{
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText="INSERT INTO SomeTable (ID, Data) VALUES(@ID, @Data)"
DbParameter idParam=cmd.Parameters.Add("Id", DbType.Int32);
DbParameter dataParam = cmd.Parameters.Add("Data", DbType.Int32);
cmd.Open();
using (DbTransaction tran=conn.BeginTransaction())
{
cmd.Transaction = tran;
try
{
foreach (DataItem item in data)
{
idParam.Value = item.ID;
dataParam.Value = item.Data;
cmd.ExecuteNonQuery();
}
tran.Commit();
conn.Close();
catch
{
tran.Rollback();
throw;
}
}
}
}
}
[nb: code written off cuff, might not compile and is meant for example purposes only]
Pretty ugly, but munging data usually is. Basically, the above opens a connection and a creates a single command object which you re-use it repeatedly within a single database transaction. It will take advantage of Sql server's query optimizer on that end of the pond, making it essentially behave like a prepared statement.
Bookmarks