2009-09-14 16 views
5

Nie przypuszczam, że ktoś wie, jak wykonać skrypt sql z nhibernate. Mam pewne statyczne dane, które potrzebuję w bazie danych, która jest zawarta w pliku staticData.sql. Kiedy uruchamiam moje testy integracyjne, odtwarzam bazę danych za pomocą polecenia export schematu i muszę uruchomić te dane. Rozumiem, że mogę to zrobić używając .net, ale naprawdę lubię mieć tylko jedną technikę dostępu do danych w moim projekt ...Skrypty Nhibernate i sql

Dzięki

Odpowiedz

4

Nie ma nic złego przy użyciu zwykłego ADO.NET, aby wstawić dane do bazy danych w teście integracyjnym. W przypadku wsadowych wsadów jest nawet lepszy niż NHibernate. Sposób, w jaki umieszczasz bazę danych w znanym stanie dla testu, nie ma większego znaczenia, ważne jest przetestowanie sposobu, w jaki uzyskujesz dostęp do swoich danych w aplikacji.

13

Spróbuj użyć NHibernate.ISession.CreateSQLQuery (queryString ciąg)

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

Oto dokumentacja: Chapter 16. Native SQL