业务层的一个方法包含多个数据对象的更新或者删除操作,而这些操作都是应该在一个事务里的,但我们的数据持久层通常又是各自开启和关闭事务的,这个应该怎么解决(不使用框架)
public void delete(object entity)
{
ISession session = GetCurrentSession();
using (ITransaction tx = session.BeginTransaction())
{
try
{
session.Delete(entity);
tx.Commit();
}catch (HibernateException)
{
tx.Rollback();
throw;
}
}
}这个是使用nhibernate的删除方法,如果业务层方法调用了多次这个方法,如何组成一个事务事务nhibernate事务设计业务层事务
public void delete(object entity)
{
ISession session = GetCurrentSession();
using (ITransaction tx = session.BeginTransaction())
{
try
{
session.Delete(entity);
tx.Commit();
}catch (HibernateException)
{
tx.Rollback();
throw;
}
}
}这个是使用nhibernate的删除方法,如果业务层方法调用了多次这个方法,如何组成一个事务事务nhibernate事务设计业务层事务
不过要注意,如果你的连接是两个不同的数据库,就会引发分布式事务。
try {
trans = new TransactionScope();
// 逻辑段
trans.Complete();
} catch(Exception ex) {
throw ex;
} finally {
if (trans != null) {
trans.Dispose();
}
}