SqlConnection.BeginTransaction(IsolationLevel.ReadUncommitted).Commit();
Люди, я столкнулся с небольшим количеством кода, и я немного запутался в том, что происходит.
Я работаю над рефакторингом кода, чтобы вместо этого обрабатывать несколько SqlCommands, а не одну SqlCommand, с которой он в настоящее время работает. Я надеюсь, что все SqlCommands могут быть обработаны в рамках одной транзакции.
Каждая SqlCommand является хранимой процедурой, поэтому фактически моя транзакция будет вызывать одну (или несколько) хранимых процедур - во-первых, возможно ли это?
В любом случае, вот блок кода:
public virtual void Execute()
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
SqlCommand storedProcedure = new SqlCommand(BlahBah, conn);
storedProcedure.CommandType = CommandType.StoredProcedure;
conn.Open();
**conn.BeginTransaction(IsolationLevel.ReadUncommitted).Commit();**
storedProcedure.ExecuteNonQuery();
conn.Close();
}
}
В частности, выделенный оператор, который устанавливает Transaction для объекта Connection, добавляется с помощью ".Commit ()".
Фактический исходный код не имеет ROLLBACK, и нигде нет коммитов. По сути, я вижу что-то вроде AutoCommit? Имеет ли смысл иметь здесь транзакцию TRANSACTION, если, например, БД не требует обработки транзакции?
Возможно, более важно для моих усилий по рефакторингу, будет ли что-то подобное иметь смысл? То есть, если я обработал 10 хранимых процедур, а последняя выдала ошибку, будет ли автоматический откат на все 10?
Вот где я хочу приземлиться:
public virtual void ExecuteTest()
{
using (SqlConnection conn = new SqlConnection(ApplicationConfig.DbConnectInfo.ConnectionString))
{
var errorText = string.Empty;
conn.Open();
conn.BeginTransaction(IsolationLevel.ReadUncommitted).Commit();
foreach (var storedProcedure in StoredProcedures)
{
storedProcedure.Connection = conn;
storedProcedure.ExecuteNonQuery();
}
conn.Close();
}
}
РЕДАКТИРОВАТЬ: эта ссылка MS предлагает подход будет работать:
SqlConnection.BeginTransaction Method (IsolationLevel)
Спасибо за Ваш интерес.