Ну, моя проблема: у меня есть такой метод:
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
}
}
}
По сути, это код.Репозиторий использует NHibernate для сохранения в БД.Мне нужно сохранить в БД, чтобы узнать новый идентификатор, а затем отправить этот идентификатор в веб-сервис.Если что-то не получается при вызове веб-службы, я хочу выполнить откат и сброс сохраненного объекта .... и вот моя проблема.Я не могу открыть и контролировать транзакцию в репозитории из моего диспетчера классов.
Я уже пробую с этим также:
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).Я получаю сообщение об ошибке, что объект «Транзакция» не найден или транзакция уже закрыта сразу после строки: «scope.Complete ();».
Я думаю, что что-то не так, пытаясь контролировать транзакцию NHibernate с помощьюTransactionScope.
Я не знаю, если есть проблема с подходом, возможно, следует использовать другой способ для решения этой ситуации ... ??
любая помощь или идея, где найти ??
Большое спасибо !!