Я не рекомендую использовать транзакцию, поскольку она трудна для обработки рефакторинга кода, так как вы можете обернуть огромное количество кода, вот как я рекомендую:
Этот ответ отличается, поскольку он добавляет транзакциювсе команды и не только для постоянства
Расширение вашего частичного класса адаптера:
partial class YourTableAdapter
{
public SqlTransaction Transaction
{
set
{
if (this.CommandCollection != null)
{
for (int i = 0; i < this.CommandCollection.Length; i++)
{
this.CommandCollection[i].Connection = value.Connection;
this.CommandCollection[i].Transaction = value;
}
}
this.Connection = value.Connection;
this._adapter.AplicaTransaction(value);
}
}
}
Метод расширения:
namespace System
{
public static class DALSqlExtension
{
public static void AplicaTransaction(this SqlDataAdapter _adapter, SqlTransaction transaction)
{
if (_adapter == null)
{
return;
}
if (_adapter.InsertCommand != null)
{
_adapter.InsertCommand.Transaction = transaction;
_adapter.InsertCommand.Connection = transaction.Connection;
}
if (_adapter.UpdateCommand != null)
{
_adapter.UpdateCommand.Transaction = transaction;
_adapter.UpdateCommand.Connection = transaction.Connection;
}
if (_adapter.DeleteCommand != null)
{
_adapter.DeleteCommand.Transaction = transaction;
_adapter.DeleteCommand.Connection = transaction.Connection;
}
if (_adapter.SelectCommand != null)
{
_adapter.SelectCommand.Transaction = transaction;
_adapter.SelectCommand.Connection = transaction.Connection;
}
}
}
}