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

标签 entity-framework entity-framework-5 entity-framework-migrations

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

当我从项目上下文菜单中选择“首先逆向工程代码”时,我会按预期获得所有模型和 DBContexts + 映射。一切看起来都很好。

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

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

我运行 PM> Add-Migration AddMyPropertyToMyTable

创建迁移文件,

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

我收到一条错误消息,告诉我这些表已经存在。

我正在学习这里的教程:> http://msdn.microsoft.com/en-us/data/jj200620

为什么会出现此错误?表当然存在,我只是对其进行了逆向工程

我应该在逆向工程后删除数据库吗?或者在逆向工程数据库的情况下,我是否必须对实际数据库进行更改,然后再次对其进行重新设计以在我的项目中获得所需的更改(那么逆向工程首先有什么意义?)

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

最佳答案

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

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

Add-Migration Initial -IgnoreChanges

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

update-database

这应该会创建 __MigrationHistory 表(在 System Tables 下)

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

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

您可以在 app.config/web.config 中进行设置,这样就不会在生产环境中进行设置。

关于entity-framework - 逆向工程数据库上的 EF 5.0 迁移。无法更新模型更改,因为表已存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16089710/

相关文章:

entity-framework - EF5代码优先迁移:使用RenameColumn后,“每个表中的列名必须唯一”错误

c# - 加载后简单删除时出现 dbUpdateConcurrencyException

c# - SQL Server 和 Entity Framework - 动态列

c# - Entity Framework 和泛型

entity-framework - 如何为多对多关系表指定模式?

c# - UWP SQL Server 迁移不起作用

c# - 字符串或二进制数据将被截断 - 列足够大

c# - 我应该如何从我的服务层方法中公开总记录数和分页记录的 IEnumerable 集合?

c# - EF Core 中使用 Fluent API 的一对一关系

mysql - ASP.NET Azure MySQL 代码优先迁移 : Table 'xxx' already exists