0

我正在尝试使用 nhibernate 映射的一些级联选项,并进行单元测试,我想在其中使用工具来检查数据库的状态。我希望我可以使用 linqpad 来执行此操作,但是在调试器中连接似乎挂起。不久前我看过一个演示,其中在调试期间使用 SSMS 来检查数据库,所以我想知道我是否应该能够以某种方式使用 linqpad 或者我是否需要其他工具(我还没有安装SSMS 在我的笔记本电脑上,更喜欢重量更轻的东西)。

与 linqpad 无关,我这样做的动机是我不确定我在单元测试中验证的数据库状态是来自数据库还是来自 nhibernate 的缓存?如果在断言之前调用 Session.Flush() ,这是否意味着断言中的提取保证来自数据库?

干杯,贝里尔

4

3 回答 3

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.

希望有帮助。

于 2009-07-06T04:39:48.007 回答
0

SQL Profiler(来自 SSMS 的工具 > SQL Server Profile)或NHProf将帮助您监控发送到数据库的命令。

于 2009-07-06T12:34:31.797 回答
0

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

DatabaseManagerSwing manager = new DatabaseManagerSwing();
manager.main();
manager.connect(connection);
manager.start();
于 2017-11-08T08:34:52.607 回答