2009-07-06 56 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();