Транзакции с типизированным набором данных и Sql Server CE - PullRequest
1 голос
/ 02 марта 2009

У меня есть приложение 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 */ 
}  

1 Ответ

1 голос
/ 03 марта 2009

Попробуйте System.Transactions. TransactionScope .

Согласно System.Transaction.TransactionScope Замечание раздел,

Если исключение возникает в области транзакции, транзакция, в которой оно участвует, будет откат .

...