我有一个应用程序,它将有一些表示层(web、移动、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);
}
}
当我们遇到错误时,这个 Transactional 属性是否通过 Commit/RollBack 控制我的事务。是否可以?还是有另一种解决方案来做到这一点?
谢谢