为什么我的SqlConnection在使用NHibernte + Spring.Net时会永远挂起

时间:2010-09-08 12:44:51

标签: nhibernate nunit spring.net sqlconnection

我编写了一个扩展Spring.Net的AbstractTransactionalDbProviderSpringContextTests类的测试用例,并尝试做类似的事情。

Step.1 MyHibernateDao.Find(id)
Step.2 Use SqlConnection API to insert some record into database.

step.1或step.2可以成功运行,但如果我把它们放在一起,step.2将永远挂起(直到超时。)

如果我添加以下语句:

Step.1 MyHibernateDao.Find(id) //My Find method does not have [Transaction] annotation.
SessionFactory.GetCurrentSession().Flush()
SessionFactory.GetCurrentSession().Close()
Step.2 Use SqlConnection API to insert some record into database.

step.1和step.2都可以成功运行,当然会因为会话已经关闭而导致拆除失败。

我想知道为什么测试在第2步挂起?没有理由一个连接需要等待另一个连接返回,或者需要等待一个表锁或什么,只需读取它。

我在这里很困惑,任何想法?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您使用的是Spring.NET的事务管理还是NHibernate?您可能需要检查会话工厂配置。