2009-09-14 11 views
5

Ne supposez pas que quelqu'un sait comment exécuter un script sql depuis nhibernate. J'ai des données statiques dont j'ai besoin dans une base de données, contenue dans un fichier staticData.sql. Lorsque j'exécute mes tests d'intégration, je recréer la base de données avec la commande schema export, et j'ai besoin d'exécuter ces données. Je me rends compte que je peux l'utiliser avec .net, mais j'aime vraiment avoir une seule technique d'accès aux données projet ...Scripts Nhibernate et sql

Merci

Répondre

4

Il n'y a rien de mal en utilisant ADO.NET simple pour insérer des données dans la base de données dans le test d'intégration. Pour les insertions par lots, c'est encore mieux que NHibernate. La façon dont vous mettez votre base de données dans un état connu pour un test n'a pas tellement d'importance, ce qui est important est de tester la façon dont vous accédez à vos données dans l'application.

13

Essayez d'utiliser NHibernate.ISession.CreateSQLQuery (string queryString)

private NHibernate.ISession session; // Initialized somewhere 

    public void ExecuteSQLFile(string sqlFilePath) 
    { 
     string sqlScript; 

     using (FileStream strm = File.OpenRead(sqlFilePath)) 
     { 
      var reader = new StreamReader(strm); 
      sqlScript = reader.ReadToEnd(); 
     } 

     var regex = new Regex("^GO", RegexOptions.IgnoreCase | RegexOptions.Multiline); 
     string[] lines = regex.Split(sqlScript); 

     foreach (string line in lines) 
     { 
      IQuery query = session.CreateSQLQuery(line); 
      query.ExecuteUpdate(); 
     } 
    } 

est la documentation ici: Chapter 16. Native SQL