2010-03-02 49 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

相关问题