我有一個應用程序,它將具有一些演示層(web,mobile,wpf,wcf,windows服務以在背景上工作等)。我們使用NHibernate來持久化域對象。我們將有存儲庫(類庫)來保存數據,服務層使用這些存儲庫根據業務規則來保存。我的問題是,我們不知道如何在這個服務層實現一個交易管理。我們可能會在同一個服務層方法中使用(多個)存儲庫,並且我們需要控制服務層上的事務。我想實現這樣的事情(由屬性):服務層中的會話和事務處理
public class DomainObjectService
{
[Transactional]
public bool CreateDomainObject(DomainObject domainObject, /* other parameters */)
{
foreach(var item in /* collection */)
{
_itemRepository.Save(item);
}
if (/* some condition */) {
/* change the domainObject here */
}
_domainObjectRepository.Save(domainObject);
}
}
而這是否事務屬性控制我的提交/回滾時,我們得到了誤差修改事務。可能嗎?還是有另一種解決方案來做到這一點?
謝謝