在Spring.Net中使用Transaction属性时,如何覆盖默认隔离级别

时间:2011-10-11 15:57:53

标签: nhibernate spring.net isolation-level spring-transactions

在方法上使用Transaction()属性时,默认隔离级别为ReadCommitted。我想要做的是在Spring.NET配置中将默认隔离级别设置为ReadUncommitted(以便不修改当前存在的所有Transaction属性定义)

我该怎么办?可以用Spring.NET 1.2完成吗?

我尝试使用tx:advice等跟随the documentation无效。

我甚至介入了Spring with Reflector的代码,但我似乎从中可以理解,是Spring只是从方法的Attribute声明中读取设置。

是否可以完成或我必须完成代码并在必要时修改属性?

2 个答案:

答案 0 :(得分:0)

我通常使用例如:

[Transaction( IsolationLevel.ReadUncommitted )]

关于我的存储库方法。它与<tx:attribute-driven transaction-manager="HibernateTransactionManager"/>结合使用。

<object
  name="HibernateTransactionManager"
  type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate32"
  dependency-check="none">
  <property name="DbProvider" ref="MsSqlDbProvider"/>
  <property name="SessionFactory" ref="SessionFactory"/>
</object>

答案 1 :(得分:0)

您应该能够创建自己的事务拦截器,扩展标准事务拦截器。然后使用ObjectNameAutoProxyCreator而不是您引用的TransactionProxyFactoryObject来连接那个。