Пакетная работа с ADO.NET - PullRequest
       1

Пакетная работа с ADO.NET

0 голосов
/ 28 августа 2011

SqlTransaction выполняет пакетную операцию без повторного доступа к базе данных?Я не знаю, так как SqlTransaction, кажется, группирует кучу команд SQL и, наконец, фиксирует базу данных.Однако каждая команда запускает ExecuteNonQuery (), что приводит к доступу к базе данных.

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

1 Ответ

2 голосов
/ 28 августа 2011

Да, как @CKoenig говорит, что будет обращаться к базе данных для каждой команды.Если вы хотите пакетировать команды, попробуйте использовать SqlDataAdapter.AddToBatch http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...