Я проверил реализацию SqlDataAdapter
с помощью Reflector, и мне кажется, что он просто последовательно выполняет соответствующие команды (InsertCommand
, UpdateCommand
, DeleteCommand
) без наложения какого-либо вида сделки вокруг них. Я подозреваю, что все другие типы адаптеров, написанные Microsoft, будут работать так же.
Если вы хотите атомарные обновления, вы должны создать свою собственную транзакцию, например,
using(var scope = new TransactionScope()) {
adapter.Update(dataSet);
scope.Complete();
}