在使用多个数据库上下文时,EF Core工具不会记住迁移文件夹

编程语言 2026-07-08

我有两个数据库上下文。为了把迁移放在不同的文件夹中,我执行:

dotnet-ef migrations add Init420 --context AssetsDevDbContext --output-dir Migrations/AssetsDevDb

它在 Migrations/AssetsDevDb 中创建了文件和快照,一切正常。

但当我运行:

dotnet-ef database update --context AssetsDevDbContext

我得到:

在程序集 'SLT.Assets' 中未找到任何迁移。需要在可以更新数据库之前先添加一个迁移。

根据文档,EF Core应该在下一次调用数据库上下文时保留该文件夹。但现在它并没有生效。

我使用的工具版本都是最新版。

你们有什么想法吗?

文档

解决方案

--output-dir 仅用于组织迁移文件。当运行 database update 时,EF Core不会查看该文件夹;它在程序集内查找已编译的迁移。

我会先运行:

dotnet ef migrations list --context AssetsDevDbContext

如果返回为空,EF Core就找不到你的迁移。就我的经验,这通常是因为迁移是为不同的 DbContext 创建的、使用了错误的启动项/项目,或者迁移没有被编译到程序集。

还要再次检查生成的迁移是否包含:

[DbContext(typeof(AssetsDevDbContext))]
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章