实体框架在迁移之前执行SQL

时间:2014-10-23 18:48:09

标签: ef-code-first entity-framework-6

我正在开发一个使用Entity-Framework 6代码优先的现有项目。我需要在迁移运行之前运行一些SQL。

我有一个带有种子方​​法的DbMigrationsConfiguration类,但种子在迁移后运行。

我认为如果我在构造函数中运行SQL但是我无法获得对上下文的引用,它会起作用。

有谁知道怎么做?

1 个答案:

答案 0 :(得分:17)

您可以在所需的迁移类中使用“Sql”方法。

public partial class OneOfYourMigrations : DbMigration 
{ 
    public override void Up() 
    { 
        //EF generated migration code here such as
        //CreateTable or AddColumn etc...
        //Now run your custom sql - here I'm doing an update to an existing column
        Sql("UPDATE dbo.YourTable SET Column1 = 'VALUE1' "); 
    } 

    public override void Down() 
    { 
        //EF generated code to rollback
    } 
}     

所以步骤是;

  • 使用“添加迁移”生成迁移类
  • 使用类似于上面的代码
  • 更改课程
  • 使用Update-Database
  • 运行迁移