Автоматическое профилирование / модульное тестирование поведения NHibernate

Я довольно интенсивно использую NHibernate в течение нескольких месяцев и считаю его очень мощным, но для меня это тот инструмент, который иногда может вам навредить. У меня было много ситуаций, когда относительно простое изменение сопоставления, в запросе LINQ или в любом коде, использующем мои сущности, приводило к неожиданному поведению. Мой самый «впечатляющий успех» - это операция чтения, которая выполняла N + 1 операций удаления и вставки только потому, что я сортировал свою коллекцию компонентов в коде, а не в базе данных.

Благодаря NHProf я могу отслеживать некоторые из подобных проблем, но я не уверен, что после рефакторинга или небольших изменений требований мой уровень доступа к данным по-прежнему будет вести себя правильно и эффективно . Тестировать / профилировать его вручную после каждого изменения как-то болезненно. Я ожидаю, что здесь будет какой-то способ модульного тестирования поведения NHibernate под капотом , то есть того, какой SQL генерируется, сколько запросов выполнено, сколько объектов загружено, сколько таблиц соединено и т. д.

Я знаю, что это может немного отличаться от основной цели ORM, но для приложений, которые должны хорошо работать, эти знания низкого уровня кажутся мне более важными, чем абстракция.

Есть ли реализации, похожие на эту идею? Как я могу автоматизировать профилирование моего приложения NHibernate?

6
задан NOtherDev 23 May 2011 в 19:50
поделиться