【问题标题】:Why does my EF6 automatic migration not working?为什么我的 EF6 自动迁移不起作用?
【发布时间】:2021-02-16 06:25:56
【问题描述】:

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

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

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

配置.cs

AutoMigrationEntities.cs

谢谢。希望你能帮助我。

【问题讨论】:

    标签: asp.net-mvc entity-framework-6 entity-framework-migrations


    【解决方案1】:

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

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

    运行

    更新数据库

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

    如果你想要这两个东西自动然后请参考EF - code first - automatic update database

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

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

    【讨论】:

    • 嗨@Rutuja,感谢您的回复。是的,我明白。但是Database.SetInitializer(new MigrateDatabaseToLatestVersion&lt;AutoMigrationEntities, Configuration&gt;()); 应该完成迁移我模型上未决更改的工作。我添加了一个断点,它在启动时被命中。我不确定我在配置中遗漏了什么。
    • 您可以使 MigrateDatabaseToLatestVersion 初始化程序使用最初触发迁移的上下文所使用的连接字符串。这是通过将 useSuppliedContext: true 传递给 MigrateDatabaseToLatestVersion 构造函数来完成的。
    • 我没有申请useSuppliedContext: true。通过访问我的AutoMigrationEntities 上的任何数据库集,迁移似乎正在自动进行,就像var genders = await db.Genders.ToListAsync(); 这样的var genders = await db.Genders.ToListAsync(); 谢谢。
    猜你喜欢
    • 2011-06-17
    • 2020-02-20
    • 1970-01-01
    • 2020-10-03
    • 2020-10-08
    • 2021-09-08
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多