Мы используем NHibernate 3.2.Nhibernate - использование ведения журнала для конкретного ISession или ISessionFactory
Я хотел бы иметь возможность регистрировать SQL-запросы из определенного ISession. Это возможно?
В качестве альтернативы, если это невозможно, могу ли я установить регистратор на конкретный ISessionFactory? Тогда я мог бы создать этот ISession с этой конкретной фабрики.
Из того, что я видел, чтобы установить регистратор, вы должны сделать что-то подобное:
<appSettings>
<add key="nhibernate-logger" value="NH3SQLLogger.LoggerFactory, NH3SQLLogger" />
</appSettings>
Однако, что бы сделать настройки глобальной для всех заводов.
Могу ли я сделать что-то вроде этого:
var config = new Configuration();
config.Configure();
config.SetProperty("nhibernate-logger",
"NH3SQLLogger.LoggerFactory, NH3SQLLogger");
_sessionFactory = config.BuildSessionFactory();
будет работать? Или есть другой способ?
Спасибо за подробный ответ, Рэнди. Однако я немного опасаюсь этого решения, поскольку это будет означать, что этот регистратор будет выполняться для каждого сеанса в системе, что приведет к глобальному поражению производительности. Нет ли другого способа (например, без ведения журнала), чтобы получить полный SQL из определенного сеанса? – VitalyB
Кроме того, если вы могли бы взглянуть на этот вопрос, последующий вопрос: http://stackoverflow.com/questions/15700406/getting-building-the-sql-with-parameters-from-nhibernate-3-2 Спасибо ! – VitalyB
@VitalyB К сожалению, я не знаю другого способа получить доступ к полной строке и параметрам SQL-запроса. И да, создание клиента ILoggerFactory приведет к какому-то результату. Я тоже посмотрел на ваш следующий вопрос, но у меня нет ничего другого, чтобы внести свой вклад, поскольку мне никогда не приходилось делать что-либо подобное. Удачи вам, хотя! –