2010-03-02 58 views

回答

2

是的。我有一個SQL和代碼遷移的混合。它使用SQL文件我的遷移看起來像:

using System.Data; 
using Migrator.Framework; 
using System.IO; 
using System.Reflection; 

namespace MyDBMigration 
{ 
    [Migration(2)] 
    public class CreateStructures_002 : Migration 
    { 

     public override void Up() 
     { 
      Assembly asm = Assembly.GetAssembly(typeof(CreateStructures_002)); 
      Stream s = asm.GetManifestResourceStream("MyDBMigration.SqlScripts.createbaredb.sql"); 
      StreamReader sr = new StreamReader(s); 
      string sql = sr.ReadToEnd(); 
      Database.ExecuteNonQuery(sql); 
     } 

     public override void Down() 
     { 
      Assembly asm = Assembly.GetAssembly(typeof(CreateStructures_002)); 
      Stream s = asm.GetManifestResourceStream("MyDBMigration.SqlScripts.dropbaredb.sql"); 
      StreamReader sr = new StreamReader(s); 
      string sql = sr.ReadToEnd(); 
      Database.ExecuteNonQuery(sql); 
     } 
    } 
} 

在那裏我有兩個文件「createbaredb.sql」和「dropbaredb.sql」在一個目錄(SqlScripts),並設置爲「嵌入的資源」在文件屬性窗格。

+1

你在這些腳本上做了什麼?你能提供一個小例子嗎?謝謝 – emzero 2010-04-27 18:04:09

+1

腳本包含sql語句,可以做你喜歡的任何事情。 Down腳本應該撤消上行腳本的任何操作。我使用SqlPubWiz和一個預先存在的數據庫創建了我的數據庫,如我在這裏的答案:http://stackoverflow.com/questions/52/get-script-of-sql-server-data/2501702#2501702,然後將生成的腳本分離事物 - 創造事物和事物 - 破壞事物,並分別用它們作爲上下腳本。 – Greg 2010-04-28 09:13:14

相關問題