为什么我的 EF6 自动迁移不起作用?

问题描述

我正在我的 ASP.NET MVC 项目中实现自动迁移。当我手动运行 add-migrationupdate-database 时,迁移工作正常。

但是,当我运行项目并将配置设置为 AutomaticMigrationsEnabled=true 时,自动迁移不起作用。

这是我的设置;我希望每当我更改模型中的某些内容时,它都应该在我每次启动项目时反映到我的数据库中。

配置.cs

enter image description here

AutoMigrationEntities.cs

enter image description here

谢谢。希望你能帮助我。

解决方法

启用自动迁移只会避免添加迁移的步骤,不会自动更新数据库。

自动迁移将避免使用 Add-Migration(除非我们真的需要),而是专注于让 Code First Migrations 自动计算和应用更改。我们将需要 Update-Database 来获取 Code First Migrations 以将我们模型的更改推送到数据库。

运行

更新数据库

包管理器控制台中的命令将更新反映数据库更改的数据库。

如果您希望自动完成这两项操作,请参阅 EF - code first - automatic update database

您可以使 MigrateDatabaseToLatestVersion 初始值设定项使用由首先触发迁移的上下文使用的连接字符串。这是通过将 useSuppliedContext: true 传递给 MigrateDatabaseToLatestVersion 构造函数来完成的,如下所示。

Database.SetInitializer(new MigrateDatabaseToLatestVersion<AutoMigrationEntities,Configuration>(useSuppliedContext: true));