反向工程数据库上的EF 5.0迁移。无法更新模型更改,因为表已存在

时间:2013-04-18 17:40:31

标签: entity-framework entity-framework-5 ef-migrations

我正在使用EF电源工具的Beta 3 for EF5.0对现有数据库进行逆向工程。

当我从项目上下文菜单中选择“Reverse engineer code first”时,我按预期获得所有模型和DBContexts +映射。一切看起来都不错。

我在逆向工程过程完成后立即成功启用了迁移。

但是我想在其中一个模型中添加一个新属性。添加新属性后,

我运行PM> Add-Migration AddMyPropertyToMyTable

创建了一个迁移文件,

如果我然后尝试PM>更新数据库

我收到错误,告诉我表格已经存在。

我在这里遵循教程:> http://msdn.microsoft.com/en-us/data/jj200620

为什么我收到此错误?当然桌子存在,我只是逆向设计它

我是否应该在逆向工程后删除数据库?或者在反向工程Db的情况下,我是否必须对实际数据库进行更改,并再次重新设计它以在项目中获得所需的更改(那么首先是逆向工程的重点是什么?)< / p>

教程中是否缺少某些内容,即在模型更改后使数据库可更新所需的额外步骤?

1 个答案:

答案 0 :(得分:8)

当您使用现有数据库启用迁移时,EF未添加__MigrationHistory表或初始迁移(DbMigration)文件。

您可以在程序包管理器控制台中使用以下命令添加初始迁移:

Add-Migration Initial -IgnoreChanges

这将是一个空的初始迁移。然后强制EF创建__MigrationHistory表,您可以使用:

update-database

然后应该创建__MigrationHistory表(在系统表下)

您现在应该能够进行模型更改,并创建新的迁移文件(或通过在Configuration.cs文件夹下的Migrations文件中配置自动迁移来使用自动迁移。

您可以使用update-database手动运行这些迁移更改,或者使用MigrateDatabaseToLatestVersion初始化程序将数据库自动迁移到应用程序启动时的最新迁移。

您可以在app.config / web.config中进行设置,以便它不会在生产中设置。例如。