【问题标题】:entity framework execute SQL before migrations实体框架在迁移前执行 SQL
【发布时间】:2014-12-19 12:57:52
【问题描述】:

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

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

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

有人知道怎么做吗?

【问题讨论】:

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


    【解决方案1】:

    您可以在所需的迁移类中使用“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
        } 
    }     
    

    所以步骤是;

    • 使用 Add-Migration 生成迁移类
    • 使用与上述类似的代码更改类
    • 使用更新数据库运行迁移

    【讨论】:

    • 你能详细解释一下吗?我认为迁移只运行一次。如果它每次都运行,但它似乎只运行一次,这将起作用。
    • 如果我知道你想运行什么样的 SQL,我可能会更具体一些吗?是修改数据(就像我上面提到的)还是别的什么?仅供参考,给定的迁移针对给定的数据库运行一次,但您始终可以回滚给定的迁移 - 更改它(即添加 Sql)并再次运行。
    猜你喜欢
    • 2016-11-18
    • 2015-05-11
    • 1970-01-01
    • 2014-10-18
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多