【问题标题】:Add migration - Both Entity Framework Core and Entity Framework 6 are installed添加迁移 - Entity Framework Core 和 Entity Framework 6 都已安装
【发布时间】:2019-01-11 07:04:47
【问题描述】:

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

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

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

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

有什么建议吗??

【问题讨论】:

  • EntityFrameworkCore\Add-Migration anything?
  • 你可以试试dotnet core cli tools。您应该能够通过指向项目文件夹从外部命令窗口运行迁移...
  • 您可以尝试dotnet ef add-migration,如果您收到错误提示dotnet-ef 不是命令,那么您的.CSPROJ 文件中缺少工具。
  • @AdamVincent 我遇到了完全相同的错误 'dotnet-ef is not a command' ,但添加工具时抛出错误:'DotnetCliTool' is not supported by project' 。
  • 您的目标是 .net 核心应用程序吗?您可以在 .NET Core 应用程序中使用 EF 6,但不能在 .NET Framework 应用程序中使用 EF Core afaik

标签: c# entity-framework visual-studio-2017 entity-framework-core entity-framework-migrations


【解决方案1】:

对于 EF6:

EntityFramework\Add-Migration <MIGRATIONNAME>

对于 EF Core:

EntityFrameworkCore\Add-Migration <MIGRATIONNAME>

【讨论】:

    【解决方案2】:

    我在我们的项目中也发生了同样的情况,该项目的历史跨度约为 20 年。

    Web 表单 到最新的 .Net Core 技术,它应有尽有。 取决于运气,我有时会发现PackageManagerConsole 使用的是EFCore,有时是EF6

    我很不高兴我不得不使用上述答案所述的前缀,所以我更深入地挖掘。

    如果你在PM&gt; PackageManagerConsole 中运行命令Get-Module,你应该得到活动模块的列表:

    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

    【讨论】:

      猜你喜欢
      • 2017-08-05
      • 2017-02-06
      • 1970-01-01
      • 2017-10-27
      • 2017-06-17
      • 1970-01-01
      • 2022-01-07
      • 2018-06-08
      • 2018-11-05
      相关资源
      最近更新 更多