2009-04-08 7 views
0

J'ai le code suivant pour effectuer une opération au niveau de la base de données via notre couche ORM active d'enregistrement.Comment faire un 'ExecuteNonQuery' dans Castle Active Record

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

Normalement quand je dois faire une requête non comme celui-ci (il est très rare que je l'avoue), je mets simplement une sélection « 1 »; après la requête qui apaise suffisamment l'enregistrement actif pour exécuter la requête sous forme de non-requête. Cependant, la commande vacuum de postgres doit être exécutée seule et ne peut pas faire partie d'une requête multi-instruction.

En regardant interface ISQLQuery, il ne semble pas être une méthode pour exécuter une non-requête, alors je me demandais comment cela peut être fait?

Répondre

1

Pour DB spécifiques appels que vous pouvez obtenir une IDbConnection brute de

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

Impressionnant. C'est exactement ce que je recherchais, merci. – Ash

+0

FAQ ActiveRecord: http://using.castleproject.org/display/AR/FAQ –

Questions connexes