7

所以我想开始 EntityFramework 4.3 迁移。我想知道我是否可以将现有数据库转换为启用迁移的数据库,并让 EF 假定只有从那时起的更改才应被视为迁移。

4

3 回答 3

8

所以看来我正在寻找的是基于代码的迁移,它在我设置 AutomaticMigrationsEnabled=false 时被激活。我的模型是从现有数据库生成的。要激活迁移,我需要做的就是启用迁移(Enable-Migrations),使用 Add-Migration 创建一个新的迁移文件,将其清空(我的模型已经在数据库中,所以我不希望 EF 尝试创建它们)并部署它。为了部署,我在 Global.asax 文件中添加了以下内容:

protected void Application_Start()
{
        var config= new Configuration();
        var migrator = new DbMigrator(config);
        migrator.Update();
}

创建了一个新表 __MigrationHistory 并在其中创建了一个新的迁移记录。这条新的迁移记录包含我的模型的散列,因此现在可以在未来使用 EF 的迁移中为我编写对模型的任何更改的脚本。

为了进行测试,我创建了另一个迁移文件 (Add-Migration),向模型添加了一个新属性,运行了为新字段编写脚本的 Add-Migrations,然后部署了我的应用程序。迁移按预期运行。

于 2012-02-14T15:50:01.047 回答
8

在这里发布了一个很好的演练:http: //thedatafarm.com/data-access/using-ef-4-3-code-first-migrations-with-an-existing-database/

我建议的一项更改是简单地注释掉 Up 和 Down 方法中的代码,直到您部署了迁移。之后,您可以取消注释代码,这样您就可以在以后需要时创建一个新数据库。

于 2012-02-18T17:21:33.973 回答
0

添加迁移-IgnoreChanges

请参阅https://msdn.microsoft.com/en-us/data/dn579398.aspx

于 2015-08-13T20:09:12.227 回答