1
以及我的問題是: 我有這樣的方法:回滾事務從另一個類
class Manager
{
void method1()
{
// save object in database to get ID
int newId = this.Repository.Save(obj);
try {
// call remote webservice to save another object with same ID as in local DB
webservice.Save(remoteObj, id);
}
catch(Exception e)
{
// do Rollback in Repository here
}
}
}
Bassically這是代碼。版本庫使用NHibernate保存到數據庫。我需要保存在數據庫中以瞭解新ID,然後將此ID發送到webservice。如果某些事情調用webservice失敗,我想回滾並放棄保存的對象....這是我的問題。我無法從我的班級經理打開和控制存儲庫中的事務。
我已與此也嘗試:
class Manager
{
void method1()
{
using (TransactionScope scope = new TransactionScope())
{
// save object in database to get ID
int newId = this.Repository.Save(obj);
// call remote webservice to save another object with same ID
// as in local DB
webservice.Save(remoteObj, id);
scope.Complete();
}
}
}
這裏的問題是,回滾是確定的,但不能保存(創建NHibernate的)。我得到有關該對象的錯誤「Transaction」未找到,或者事務已經在行後面關閉:「scope.Complete();」。
我認爲嘗試使用TransactionScope控制NHibernate事務是錯誤的。
我不知道如果是關於方法的問題,也許應該用另一種方式來處理這種情況...... ??
任何幫助或想法在哪裏可以找到?
非常感謝!
你能在你的倉庫張貼代碼? –