【发布时间】: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