Мне интересно, если следующий код будет считаться безопасным?
using (SqlConnection cn = new SqlClient.SqlConnection(connectionString))
{
cn.Open();
using (SqlTransaction tr = cn.BeginTransaction())
{
try
{
if (!Data.DoSomething1(tr, p1, p2))
{
tr.Rollback();
return false;
}
foreach (ItemType item in Items)
{
if (!Data.DoSomething2(tr, p3, p4))
{
tr.Rollback();
return false;
}
}
tr.Commit();
return true;
}
catch (Exception myErr)
{
if (tr != null)
tr.Rollback();
throw myErr;
}
finally
{
if (cn != null)
{
cn.Close();
cn.Dispose();
}
}
}
}
Я хотел передать транзакцию 'tr' по ссылке, но не смог, потому что она находится внутри конструкции "using".
Я хотел бы услышать предложения для лучшего подхода в подобных ситуациях.
Привет