2

我正在使用EF 5的EF电源工具的Beta 3版对现有数据库进行逆向工程。EF 5.0在反向工程数据库上迁移。无法更新模型更改,因为表已存在

当我从项目上下文菜单中选择“反向工程代码优先”时,我按预期得到所有模型和DBContexts +映射。而且一切看起来不错。

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

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

我跑PM>添加迁移AddMyPropertyToMyTable

创建迁移文件,

如果我再尝试PM>更新,数据库

我得到一个错误说服力我表格已经存在了。

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

为什么会出现这个错误?当然表中存在,我只是反向设计它

我应该在逆向工程后删除数据库吗?或者在逆向工程Db的情况下,我是否必须对实际数据库进行更改,然后再次对其进行工程设计,以便在项目中获得所需的更改(因此,逆向工程的起点是什么?)

是否有教程中缺少的东西,即在模型更改之后需要额外的步骤才能使数据库更新?

回答

8

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

您可以通过添加一个初始迁移包管理器控制台执行以下操作:

Add-Migration Initial -IgnoreChanges 

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

update-database 

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

您现在应该能够使模式的转变,并创造新的迁移文件(或通过在Migrations文件夹下的Configuration.cs文件中配置它来使用自动迁移)。

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

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

+0

谢谢,完美的作品。 – John

相关问题