2009-07-06 51 views
0

我尝试了一些使用nhibernate映射的级联选项,并有一个单元测试,我希望使用工具来检查数据库的状态。我希望我可以使用linqpad做到这一点,但在调试器中连接似乎挂起。我在很久以前看过一个演示,在调试过程中SSMS被用来检查数据库,所以我想知道我是否应该能够以某种方式使用linqpad,或者如果我需要一个不同的工具(我还没有安装SSMS在我的笔记本电脑上,会更喜欢重量更轻的东西)。调试时的数据库检查

与linqpad无关,我这样做的动机是我不知道我在单元测试中验证的db状态是来自db还是来自nhibernate的缓存?如果Session.Flush()在assert之前被调用,那么这是否意味着assert中的提取肯定会来自db?

干杯, Berryl

回答

1

你的问题的第二部分 - 是的,任何一种取将推动所有的东西到数据库的调用之前调用Session.flush()。你也可以这样做:

Transaction t = session.beginTransaction(); 
//some hibernate interaction test code 
t.commit() 
//you can rest assured that any code coming from the hibernate now will 
//be exactly what is in the db. 

希望有帮助。

0

SQL事件探查器(工具> SSMS中的SQL Server配置文件)或NHProf将帮助您监视发送到数据库的命令。

+0

嗨杰米 我可以看到发送到现在DB SQL语句只是通过配置NHib给他们到控制台。它的有用,但我正在寻找一个轻量级的工具,可以在调试过程中检查db数据。 干杯, – Berryl 2009-07-06 15:13:54

0

您可以使用HSQLDB中包含的DatabaseManagerSwing类,它将打开一个Swing应用程序,该应用程序允许您浏览数据库中的对象并运行查询。传递给它的开放连接可以让你看到在连接是在交易数据库的状态。

DatabaseManagerSwing manager = new DatabaseManagerSwing(); 
manager.main(); 
manager.connect(connection); 
manager.start();