ORM World является мощным и полнофункциональным, я думаю, что сегодня препятствия - это сами люди, это означает, что при использовании потребностей ORM нужно помнить об изменениях в мышлении приложений, архитектур и шаблонов.
Чтобы ответить на ваши вопросы:
Выполнение запроса зависит от большего количества факторов, можно полностью настроить механизм / среду, чтобы использовать преимущества различных функций, таких как отложенное выполнение, будущие запросы (запросы, выполненные в будущем), несколько запросов и последнее, но Не в последнюю очередь, управление сессиями включает в себя:
Отложенное выполнение основано на таких понятиях, как ленивая загрузка и ленивое выполнение, это означает, что запросы выполняются к базе данных только тогда, когда вы выполняете некоторые действия, такие как доступ к методам сеанса NHibernate, таким как ToList ( ) , еще один пример отложенного выполнения - использование LinqToNhibernate, где при обращении к определенным объектам выполняются запросы
Будущие запросы, как я уже говорил, до того, как запросы будут выполнены в будущем, Айенде хорошо говорит об этом
Несколько запросов - это запросы, которые могут быть "упакованы" вместе и выполнены за один раз, избегая многократных обращений к БД, и это может быть очень интересной функцией
Управление сеансами, это еще одна глава для упоминания ... но имейте в виду, что если вы хорошо управляете своим сеансом, или лучше, пусть движок NHibernate хорошо управляет сеансом, иногда нет необходимости переходить DN для получения данных
во всех случаях такие инструменты, как NHibernate, генерируют запросы для вас, а параметризованные запросы хорошо управляются с параметрами, даже в зависимости от базового механизма БД и, соответственно, выбранного вами БД Диалект!
Понятно, что фреймворки, такие как NHibernate, в большинстве случаев используют отражение во время выполнения, но необходимо упомянуть, что используются множественные оптимизации отражения, см., Например, Динамические прокси ... Это Ясно, что иногда или, возможно, прямой код может быть быстрее, но только в модуле, в целом это может привести к большему количеству ошибок и узких мест
Говоря о NHibernate, или, точнее говоря, полезно понимать, что вы имеете в виду, когда говорите о временных таблицах и временных данных. В таких условиях NHibernate, как я знаю, изначально не поддерживает временные таблицы, в смысле таблиц времени выполнения, но это может быть сделано, потому что NHibernate позволяет создавать сопоставление объектов во время выполнения, поэтому механизм данных Temp может быть реализован с использованием этого API
Надеюсь, я дал полезный ответ!
... и упс, извините за мой плохой английский!