在使用多个数据库上下文时,EF Core工具不会记住迁移文件夹
我有两个数据库上下文。为了把迁移放在不同的文件夹中,我执行:
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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。