2009-08-19 24 views

回答

4

可以使用的SchemaExport類NHibernate的做這個代碼:

var schema = new SchemaExport(config); 
schema.Drop(true, true); 
schema.Execute(true, true, false); 
+0

'schema.Drop(真,真)'是不是必要的,因爲執行永遠滴創建前 – Firo 2012-05-02 09:26:56

1

刪除整個數據庫 - 不要通過表中刪除表 - ,增加了過多的維護開銷

+0

我的意思programaticly :) – 2009-08-19 14:18:15

1

我已經使用以下工具方法運行SQL腳本在一個項目中建立數據庫和測試數據,我我現在正在和每一個人一起工作。它一直相當好:

internal static void RunScriptFile(SqlConnection conn, string fileName) 
{ 
    long fileSize = 0; 
    using (FileStream stream = File.OpenRead(fileName)) 
    { 
     fileSize = stream.Length; 
     using (StreamReader reader = new StreamReader(stream)) 
     { 
      StringBuilder sb = new StringBuilder(); 
      string line = string.Empty; 
      while (!reader.EndOfStream) 
      { 
       line = reader.ReadLine(); 
       if (string.Compare(line.Trim(), "GO", StringComparison.InvariantCultureIgnoreCase) == 0) 
       { 
        RunCommand(conn, sb.ToString()); 
        sb.Length = 0; 
       } 
       else 
       { 
        sb.AppendLine(line); 
       } 
      } 
     } 
    } 
} 

private static void RunCommand(SqlConnection connection, string commandString) 
{ 
    using (SqlCommand command = new SqlCommand(commandString, connection)) 
    { 
     try 
     { 
      command.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(string.Format("Exception while executing statement: {0}", commandString)); 
      Console.WriteLine(ex.ToString()); 
     } 
    } 
} 

我已經使用了Database Publishing Wizard生成SQL腳本(在某些情況下編輯他們只包括我要在測試中使用的數據),而只是通過腳本文件路徑進行測試前的RunScriptFile方法。該方法解析腳本文件並執行由GO線單獨分開的每個部分(我發現,這在運行SQL腳本發生錯誤的故障排除極大的幫助)。

我已經有一段時間,因爲我寫的代碼,但我認爲它需要的腳本文件,以便一GO線爲它的最後部分結束執行。

0

我用變形桿菌(單元測試實用程序),可在谷歌代碼在這裏:

http://code.google.com/p/proteusproject/

您創建的一組數據。每一次,你運行一個單元測試時,保存當前數據,該組數據被加載,那麼你使用同一組數據,讓您的測試的所有時間。最後,原始數據被恢復。

非常強大

HTH

相關問題