EF Core Tooling 1.1.0-preview4-final与Net46不兼容

时间:2017-02-05 00:22:21

标签: entity-framework entity-framework-core

我有一个EF Core项目,我最近升级到1.1。一切都很好......直到我尝试添加迁移。在命令行上执行dotnet ef现在会生成一个关于无法找到ef模块/程序的错误。

稍微深入研究一下,我发现EF Core 1中存在重大变化 - > 1.1涉及工具的过渡。在project.json中,您必须替换此依赖项:

"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",

"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final", 

不幸的是......当我这样做时,软件包更新失败,并显示错误消息,即此版本的工具不支持net46。由于我正在使用的某些库,我必须运行它。

这是整个project.json文件:

  "version": "1.0.0-*",

  "dependencies": {
    "ConnellDataCore": "1.0.0-*",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0",
    "Microsoft.EntityFrameworkCore": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final", 
    "Microsoft.Extensions.Configuration": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Serilog": "2.3.0"
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "xmlDoc": false
  },

  "frameworks": {
    "net46": {
      "frameworkAssemblies": {
        "System.IO.Compression": "4.0.0.0"
      }
    }
  },

  "tools": {
  }

我还应该指出数据库是在一个独立的程序集中定义的,所以我不得不使用“创建一个虚拟的静态Program :: Main()”技巧,以及“创建一个临时的上下文工厂” “技巧。

如何回到原来的位置,能够将迁移添加到我的EF Core数据库?

1 个答案:

答案 0 :(得分:1)

这是2017年2月初的已知错误。解决方法是恢复到早期版本的工具(在project.json文件中):

"Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final"

另请注意,程序集路径已从Microsoft.EntityFrameworkCore更改为Microsoft.EntityFrameworkCore。 Tools.DotNet 工具

最后,在我的特定情况下,我错误地将引用包含在project.json文件的dependencies部分中。它们确实属于工具部分:

  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
    "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final"
  }