2009-09-14 20 views
5

No suponga que alguien sepa cómo ejecutar un script sql desde nhibernate. Tengo algunos datos estáticos que necesito en una base de datos, que está contenida, en un archivo staticData.sql. Cuando ejecuto mis pruebas de integración, vuelvo a crear la base de datos con el comando schema export, y necesito ejecutar estos datos. Me doy cuenta de que puedo obtenerlo usando .net, pero Id realmente me gusta tener solo una técnica de acceso a datos en mi proyecto ...scripts de Nhibernate y sql

Gracias

Respuesta

4

No hay nada malo con ADO.NET sencillo para insertar datos en la base de datos de prueba de integración. Para inserciones por lotes, es incluso mejor que NHibernate. La forma en que coloca su base de datos en un estado conocido para una prueba no importa demasiado, lo importante es probar la forma en que accede a sus datos en la aplicación.

13

Intente utilizar NHibernate.ISession.CreateSQLQuery (queryString cadena)

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(); 
     } 
    } 

Aquí está la documentación: Chapter 16. Native SQL