2010-09-08 90 views
0

我写了一个扩展Spring.Net的AbstractTransactionalDbProviderSpringContextTests类并试图做这样的事情的测试用例。为什么我的SqlConnection在使用NHibernte + Spring.Net时永远挂起

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都可以成功运行,当然因为会话已经关闭,所以拆卸将失败。

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

我很困惑这里,有什么想法吗?

在此先感谢。

+1

你可以发布你的测试用例中导致挂起的实际(完整)代码吗?没有更多的信息,就不可能提出你可能做错了什么。 – sbohlen 2010-10-20 12:15:08

回答

0

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