添加迁移 - Entity Framework Core 和 Entity Framework 6 均已安装

Sha*_*mad 2 c# entity-framework entity-framework-core visual-studio-2017 entity-framework-migrations

我有一个包含多个项目的解决方案,其中一个使用 EF 6,另一个使用 entityframeworkcore。

在添加 EF6 项目之前,迁移工作正常,但现在我无法使用迁移命令: add-migration 'anything'

Entity Framework Core 和 Entity Framework 6 都已安装。Entity Framework Core 工具正在运行。对实体框架 6 使用“EntityFramework\Add-Migration”。

对于带有 EF6 的项目,我可以使用以下方式添加迁移: EntityFramework\Add-Migration 'anthing_here',但我无法使用这种方式向带有 EFCore 的项目添加迁移。

有什么建议 ??

Kad*_*daj 10

我的项目也发生过同样的情况,该项目已有约 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             
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这里的问题甚至可能知道EntityFramework Core and 6解决方案正在使用两者。

您可以使用以下命令删除冲突的模块之一:

PM> Remove-Module <module-name-from-list>
Run Code Online (Sandbox Code Playgroud)

我需要的是仅使用 EFCore,因此我删除了 EF6 模块,如下所示:

PM> Remove-Module EntityFramework6
Run Code Online (Sandbox Code Playgroud)

然后您可以使用不带前缀的命令,例如:

PM> Add-Migration TestMigration
Run Code Online (Sandbox Code Playgroud)

我与 EF 团队进行的相关讨论: https ://github.com/dotnet/efcore/issues/27051


小智 6

对于 EF6:

EntityFramework\Add-Migration <MIGRATIONNAME>
Run Code Online (Sandbox Code Playgroud)

对于 EF 核心:

EntityFrameworkCore\Add-Migration <MIGRATIONNAME>
Run Code Online (Sandbox Code Playgroud)