Как получить автоматически сгенерированные операторы SQL из операции NHibernate? - PullRequest
0 голосов
/ 29 августа 2009

У меня каверзная проблема. Я должен записать определенные операции базы данных в мою таблицу журнала базы данных. Это пользовательская таблица, не относящаяся ни к одной таблице системной базы данных. Он принимает форму операторов SQL, но я использую NHibernate в качестве методов доступа к данным.

Так как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 25 декабря 2009

Хотя я должен был бы попробовать это сам, чтобы быть уверенным, у вас должна быть возможность использовать собственный перехватчик для этого. Проверьте IInterceptor и наследуйте от EmptyInterceptor. Примерно так должно работать:

public class LogSqlInterceptor : EmptyInterceptor {     
  public SqlString OnPrepareStatement(SqlString sql) {
    logger.Log(sql.ToString());
  }
}

logger - это то, что вы используете для записи операторов sql. Это может быть просто File.WriteLine (). Я вполне уверен, что это будет делать то, что вы хотите, но я не могу проверить это прямо сейчас.

0 голосов
/ 29 августа 2009

Единственный способ убедиться, что все команды зарегистрированы, - это настроить трассировку SQL и заставить ее записывать все команды в таблицу SQL Server.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...