Nhibernate 用于测试的嵌套事务

Nhibernate 用于测试的嵌套事务,nhibernate,testing,transactions,transactionscope,Nhibernate,Testing,Transactions,Transactionscope,我想知道嵌套两个事务是否是一种好的做法?例如,为了测试的好处,使用TransactionScope包装我的NHibernate事务(确保db回滚测试中所做的所有更改) 另一个选项是将插入Db的实体保留在内存中,并在测试结束时删除它们 哪个更好?首先,nhibernate不支持嵌套事务 另一方的TransactionScope不会创建新的事务,如果已经打开了一个事务。如果您只使用事务作用域,它将为连接创建一个新事务 如果随后在范围内打开一个事务,这仍然适用于nhibernate 回到您的问题,这在

我想知道嵌套两个事务是否是一种好的做法?例如,为了测试的好处,使用TransactionScope包装我的NHibernate事务(确保db回滚测试中所做的所有更改)

另一个选项是将插入Db的实体保留在内存中,并在测试结束时删除它们


哪个更好?

首先,nhibernate不支持嵌套事务

另一方的TransactionScope不会创建新的事务,如果已经打开了一个事务。如果您只使用事务作用域,它将为连接创建一个新事务

如果随后在范围内打开一个事务,这仍然适用于nhibernate

回到您的问题,这在很大程度上取决于您在TransactionScope中创建的对象数量。如果它变得太多,您将简单地向数据库的事务日志发送垃圾邮件。除此之外,我想说,这个概念非常好


需要指出的一点是,如果您使用TransactionScope,并使用nhibernate创建多个会话/事务,则作用域可能会切换到分布式事务,这需要MSDTC在目标服务器上运行,否则它将失败。

首先,nhibernate不支持嵌套事务

另一方的TransactionScope不会创建新的事务,如果已经打开了一个事务。如果您只使用事务作用域,它将为连接创建一个新事务

如果随后在范围内打开一个事务,这仍然适用于nhibernate

回到您的问题,这在很大程度上取决于您在TransactionScope中创建的对象数量。如果它变得太多,您将简单地向数据库的事务日志发送垃圾邮件。除此之外,我想说,这个概念非常好

需要指出的一点是,如果您使用TransactionScope,并使用nhibernate创建多个会话/事务,则作用域可能会切换到分布式事务,这需要MSDTC在目标服务器上运行,否则它将失败