我有一个包含多个项目的解决方案,其中一个使用 EF 6,另一个使用实体框架核心。
在添加 EF6 项目之前迁移工作正常,但现在我无法使用迁移的命令:
add-migration 'anything'
Entity Framework Core 和 Entity Framework 6 均已安装。 Entity Framework Core 工具正在运行。对实体框架 6 使用“EntityFramework\Add-Migration”。
对于使用 EF6 的项目,我可以使用以下方式添加迁移:
EntityFramework\Add-Migration 'anthing_here'
,但我无法使用这种方式向带有 EFCore 的项目添加迁移。 有什么建议吗??
我的项目也发生过同样的情况,该项目已有约 20 年的历史。
它拥有从Web Forms到最新的.Net Core技术的一切。 取决于运气,我有时会发现
PackageManagerConsole
有时使用 EFCore
EF6
。
我不高兴我必须使用像上面答案所述的前缀,所以我更深入地挖掘。
如果您在
Get-Module
中运行命令 PM> PackageManagerConsole
,您应该获得活动模块列表:
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 6.4.4 EntityFramework6 {Add-EFDefaultConnectionFactory, Add-EFProvider, Add-Migration, Enable-Migrations...}
Script 5.0.10 EntityFrameworkCore {Add-Migration, Drop-Database, Enable-Migrations, Get-DbContext...}
Script 2.0.0.0 NuGet {Add-BindingRedirect, Find-Package, Get-Package, Get-Project...}
Script 0.0 profile
这里的问题正如您所看到的,甚至可能知道解决方案正在使用两个
EntityFramework Core and 6
。
您可以使用命令删除冲突的模块之一:
PM> Remove-Module <module-name-from-list>
我需要的是仅使用 EFCore,因此我删除了 EF6 模块,如下所示:
PM> Remove-Module EntityFramework6
然后您可以使用不带前缀的命令,例如:
PM> Add-Migration TestMigration
我与 EF 团队的相关讨论: https://github.com/dotnet/efcore/issues/27051
对于 EF6:
EntityFramework\Add-Migration <MIGRATIONNAME>
对于 EF Core:
EntityFrameworkCore\Add-Migration <MIGRATIONNAME>
2023 年。
对于 EF6 使用:
EntityFramework6\Add-Migration USA-1282-DACLUpdate