У меня есть приложение WinForms, которое взаимодействует с локальной базой данных SqlCe. Я управляю операциями БД, используя BindingSources, TableAdapters и типизированные наборы данных. У меня есть несколько операций, разбросанных по нескольким методам в двух разных классах, которые мне нужно выполнить в транзакции, и я думал об использовании System.Transactions.Transaction или CommitableTransaction. Мой вопрос заключается в том, будет ли Transaction или CommittableTransaction работать успешно в транзакции и выполнить откат в случае ошибки в этом примере кода, или я должен также использовать транзакцию в OtherClass методах тоже?:
OtherClass othercls = new OtherClass();
...
private void DoAll()
{
/* begin transaction here */
this.tableAdapter.DoSomeDBWork();
othercls.DeleteSomeRecords(); //uses tableadapter+sql code to delete. throws exception on error. doesn't have transaction
othercls.DeletOtherRecords(); //uses tableAdapter.Rows.Find(id).Delete(). throws exception on error. doesn't have transaction
othercls.Update(); //uses tableadapter.Update(). throws exception on error. doesn't have transaction
this.DeleteSomeFiles(); //throws exception on fail
/* end transaction here */
}