【问题标题】:Microsoft.EntityFrameworkCore.SqlServer - Database not updating on context.Database.Migrate();Microsoft.EntityFrameworkCore.SqlServer - 数据库未在 context.Database.Migrate() 上更新;
【发布时间】:2023-01-04 09:55:57
【问题描述】:

我正在尝试将一个项目从使用 Dapper 转移到 Microsoft.EntityFrameworkCore.SqlServer。

我已经创建了实体及其各自的映射(配置)。

此外,我在启动时使用我的 ConfigureServices 方法运行。

using var scope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope();
using var context = scope.ServiceProvider.GetRequiredService<SpannerContext>();
context.Database.EnsureCreated();
context.Database.Migrate();

但是什么也没有发生;

日志显示:

info: Microsoft.EntityFrameworkCore.Migrations[20405]
      No migrations were applied. The database is already up to date.

但是我添加了一些新的 DbSets 并且还更改了一些列类型

我错过了什么吗?

【问题讨论】:

  • context.Database.EnsureCreated() 应该创建数据库。你查过数据库吗?除非执行命令 add-migration,否则 Migrate() 方法不会生效。阅读更多 learn.microsoft.com/en-us/ef/core/managing-schemas/ensure-created
  • 我也试过在迁移之前运行 EnsureCreated,但没有成功
  • 我认为重要的是要说数据库已经创建。
  • 好的,在这种情况下,EnsureCreated 无效。你在使用迁移吗?如果不是,则必须调用 EnsureDeleted,然后调用 EnsureCreated(删除数据库)。如果您不想删除数据库,则必须使用迁移。运行命令添加迁移你的信息.在这里阅读更多 learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/
  • 使用命令 Add-migration 添加迁移后,Database.Migrate() 的行为就好像您要执行命令 update-database 一样。它只是将创建的迁移应用到数据库。

标签: c# .net entity-framework-core .net-6.0 entity-framework-migrations


【解决方案1】:

尝试从现有数据库生成模型和配置,然后在模型中应用修改/更改。

https://www.entityframeworktutorial.net/efcore/create-model-for-existing-database-in-ef-core.aspx

【讨论】:

  • 我已经使用 JetBrains.Rider EntityFramework.Core 插件完成了
【解决方案2】:

我为了解决问题我遵循了以下步骤

  1. 搭建数据库;
  2. 添加迁移;
  3. 第一次运行代码,确保创建实体框架迁移表;
  4. 进入entity framework表,添加create migration的名称;
  5. 使用新表/列 e 等修改数据库;
  6. 添加一个新的迁移;

    新迁移应该按预期工作;

    这样你就不需要评论向上部分代码;

【讨论】:

    猜你喜欢
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2021-06-22
    相关资源
    最近更新 更多