2009-07-06 2 views
0

Я пытаюсь использовать некоторые параметры каскада с отображением nhibernate и иметь единичный тест, где я бы хотел использовать инструмент для проверки состояния базы данных. Я надеялся, что смогу использовать linqpad для этого, но соединение кажется зависающим в отладчике. Я видел демо не так давно, когда SSMS использовался для проверки db во время отладки, поэтому мне интересно, смогу ли я каким-то образом использовать linqpad или мне нужен другой инструмент (я еще не установил SSMS на моем ноутбуке и предпочли бы что-то более легкое).Проверка базы данных при отладке

Не связанный с linqpad, моя мотивация для этого заключается в том, что я не уверен, что состояние db, которое я проверяю в модульном тесте, находится из db или из кэша nhibernate? Если Session.Flush() вызывается перед утверждением, означает ли это, что выборка в 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 Profiler (Инструменты> Профиль SQL Server из SSMS) или NHProf поможет вам отслеживать команды, отправленные в базу данных.

+0

Привет Джейми Я могу видеть SQL заявления, отправленные в БД теперь только путем настройки NHib, чтобы отправить их на консоль. Его полезно, но я ищу легкий инструмент, который может проверять данные db во время отладки. Cheers, – Berryl

0

Вы можете использовать класс DatabaseManagerSwing, включенный в HSQLDB, он открывает приложение Swing, которое позволяет вам просматривать объекты в db, а также запускать запросы. Переходя к нему открытое соединение позволяет видеть состояние базы данных в транзакции соединение находится.

DatabaseManagerSwing manager = new DatabaseManagerSwing(); 
manager.main(); 
manager.connect(connection); 
manager.start(); 
Смежные вопросы