Я использую NHibernate довольно интенсивно в течение нескольких месяцев, и я нахожу его очень мощным, но для меня это инструмент, который иногда может причинить вам боль. У меня было много ситуаций, когда относительно простое изменение отображения, запроса LINQ или любого кода, использующего мои сущности, приводило к неожиданному поведению. Мой самый «впечатляющий успех» - это операция чтения, которая удаляла и вставляла N + 1 только потому, что я сортировал свою коллекцию компонентов в коде, а не в базе данных.
Благодаря NHProf Я могу отследить некоторые из подобных проблем, но чувствую, что не могу быть уверен, что после рефакторинга или небольших изменений требований уровень доступа к данным по-прежнему будет работать правильно и эффективно . Тестирование / профилирование вручную после каждого изменения является болезненным. Здесь я ожидаю какой-то способ модульного тестирования поведения NHibernate под капотом , то есть какой SQL генерируется, сколько запросов выполнено, сколько сущностей загружено, сколько таблиц объединено и т. д.
Я знаю, что это может быть немного от основной цели ORM, но для приложений, которые должны работать хорошо, это низкоуровневое знание кажется мне более важным, чем абстракция.
Есть ли реализации, подобные этой идее? Как автоматизировать профилирование моего приложения NHibernate?