Как сделать «ExecuteNonQuery» в Castle Active Record - PullRequest
0 голосов
/ 08 апреля 2009

У меня есть следующий код для выполнения операции на уровне базы данных через слой ORM активной записи.

public static void Vacuum() {
  Execute(
    delegate(ISession session, object instance) {
      ISQLQuery query =
        session.CreateSQLQuery(@"
          VACUUM billableaddresses;
          ")
      query.List();
      return null;
    }, null);
}

Обычно, когда мне нужно выполнить не-запрос, подобный этому (я допускаю, что это очень редко), я просто ставлю select '1'; после запроса, который добавляет Active Record достаточно для выполнения запроса как запроса.

Однако команда postgres 'вакуума' должна выполняться сама по себе и не может быть частью запроса с несколькими операторами.

глядя на интерфейс ISQLQuery, похоже, нет способа выполнить запрос, поэтому мне было интересно, как это можно сделать?

1 Ответ

1 голос
/ 08 апреля 2009

Для определенных вызовов БД вы можете получить необработанное IDbConnection от

ActiveRecordMediator.GetSessionFactoryHolder().GetSessionFactory(typeof (object)).ConnectionProvider.GetConnection()
...