我在迁移过程中遇到了麻烦,它似乎被EF核心错误地删除了。它说我必须手动删除某些文件,因为迁移文件没有找到,但我找不到关于如何删除该文件的指南。
我没有意识到mi项目被设置为pgsql,而不是sqlite
H 212H 113我添加了一个新的migration
The新迁移是在and上再次H 216H 117删除迁移尝试删除迁移(步骤2),而不是步骤6。<>H 218>上面说没有找到名为“20220308_Migration2.cs”的文件。--您必须手动删除迁移类'Migration2',这就是问题所在。
我的添加、删除和列出迁移的命令如下:
dotnet ef migrations add name -c MyContext -p .\Project.Db\Project.Db.csproj -o .Project.Db\Data\Migrations -s .\Project.Server\Project.Server.csproj
dotnet ef migrations delete name -c MyContext -p .\Project.Db\Project.Db.csproj -s .\Project.Server\Project.Server.csproj
dotnet ef migrations delete name -c MyContext -p .\Project.Db\Project.Db.csproj -s .\Project.Server\Project.Server.csproj完成之后,如果我执行list命令,输出将显示:
Migration1 (pending)
Migration2 (pending)其中Migration1是初始创建,Migration2是应用于step2的迁移。
我在Data/Migrations文件夹中拥有的文件是对应于Migration1和Migration3的文件(步骤6)
另一个问题。
list命令数据来自何处?是否有秘密数据库或隐藏的caché文件夹?
如果我只是删除Data/Migrations文件夹,我是否能够重新开始迁移?
谢谢
发布于 2022-03-10 01:46:20
我的问题是项目之间的沟通。在此之前,我没有提到我的解决方案在项目之间被分割(正如您可以从命令中看到的那样),并且这些项目通过硬链接(微软的mklink -h)相互链接到编译的下层项目的de .dll。
发生的情况是,DB项目和Server项目之间的硬链接不知何故失败了,因此Server项目不知道Db项目上的更改,它只能看到DB项目,因为在硬链接失败的时刻,它只能看到DB项目。
最后,我删除了引用,并再次添加它。当我这么做的时候,这个项目就认识到了迁移的真实状态,一切都进行得很顺利。
因此(回答我的问题),消息告诉我删除./Data/Migrations中的迁移文件。该文件已被删除,但服务器项目无法看到该文件。
“缓存”实际上是指引用DB项目的旧版本的损坏的硬链接。list命令扫描文件夹-/Data/Migrations并与数据库进行比较。
https://stackoverflow.com/questions/71402806
复制相似问题