Как сделать «ExecuteNonQuery» в Castle Active Record

У меня есть следующий код для выполнения операции на уровне базы данных через наш уровень активной записи 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 'vacuum' должна выполняться сама по себе и не может быть частью запроса с несколькими операторами.

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


person Ash    schedule 08.04.2009    source источник


Ответы (1)


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

ActiveRecordMediator.GetSessionFactoryHolder().GetSessionFactory(typeof (object)).ConnectionProvider.GetConnection()
person Mauricio Scheffer    schedule 08.04.2009