2009-09-14 18 views
5

Supponiamo che qualcuno sappia come eseguire uno script sql da nhibernate. Ho alcuni dati statici di cui ho bisogno in un database, contenuto in un file staticData.sql. Quando eseguo i miei test di integrazione, ricrei il database con il comando di esportazione dello schema e ho bisogno di eseguire questi dati. Mi rendo conto di poterlo utilizzare con .net, ma Id mi piace davvero avere solo una tecnica di accesso ai dati nella mia progetto ...Script nibernati e sql

Grazie

risposta

4

c'è niente di sbagliato con ADO.NET pianura per inserire i dati nel database di test di integrazione. Per gli inserti batch è persino migliore di NHibernate. Il modo in cui inserisci il tuo database in uno stato conosciuto per un test non è poi così importante, ciò che è importante è testare il modo in cui accedi ai tuoi dati nell'applicazione.

13

Provare a utilizzare NHibernate.ISession.CreateSQLQuery (stringa 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(); 
     } 
    } 

Ecco la documentazione: Chapter 16. Native SQL