无法使用EF Core 1.1

时间:2016-12-09 20:17:14

标签: asp.net-core entity-framework-core

我花了整整两天时间尝试为项目数据库创建初始迁移。这太令人沮丧了。每个预览版本的文档都指向不同的方向,并且有很多未公开的问题会在一段时间内发生。

我的项目是在完整框架(net462)上运行的AspNetCore应用程序,尽管我认为我已经尝试了预览版本的每个组合,甚至是在此问题上提出的解决方法:EF Tools 1.1.0-preview4 Unrecognized option '--config'或在此版本中: https://github.com/aspnet/EntityFramework/issues/7083但不起作用。

这是我的project.json的摘要及相关部分:

{
    "version": "1.0.0-*",
    "buildOptions": {
        "platform": "x86",
        "debugType": "full",
        "preserveCompilationContext": true,
        "emitEntryPoint": true
     },

     "dependencies": {
        ....
        "Microsoft.EntityFrameworkCore": "1.1.0",
        "Microsoft.EntityFrameworkCore.Design": "1.1.0",
        "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
        "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
        ....
       },

      "tools": {
         "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
         "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.1.0-preview4-final"
       },

       "frameworks": {
            "net462": {
            }
        },

    ...
}

在我的情况下,建议的解决方法不起作用,既不使用每晚构建也不将工具降级为1.0.0-preview3。

如果我使用1.1.0-preview4-final版本的工具,我遇到了这个错误:

Unrecognized option --config

如果我使用每晚构建,我会得到这个,因为我的应用程序只有一个项目而且不是一个dll(它还有emitEntryPoint:true set),所以它有点荒谬。

Could not load assembly 'Sales'. Ensure it is referenced by the startup project 'Sales'

但这是我最喜欢的,当我降级到1.0.0-preview3-final的工具时,我得到了这个超现实主义的一个:

error: Package Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0-preview3-final is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.EntityFrameworkCore.Tools.DotNet 1.0.0-preview3-final supports: netcoreapp1.0 (.NETCoreApp,Version=v1.0)

我必须阅读它五次,以确保在第二句话中说的是与第一句相反的......这似乎是一个笑话!

此外,无论我安装哪种版本的工具,无论我是否恢复软件包以及是否重新启动计算机,命令都不再适用于PMC ...

我对这么多版本的内容感到疯狂,我只想创建一个迁移,我必须使用的工具版本并不重要......现在是否有一个有效的配置或者我在尝试一些不可能的事情? 有没有人能够在asp.net核心应用程序中使用任何版本的ef工具在完整的.net框架(net462)中创建迁移?

如果是的话,怎么样?

修改

将项目定位到.netcoreapp1.0并删除不兼容的引用后,我发现此错误:

A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'C:\Program Files (x86)\dotnet\shared\Microsoft.NETCore.App\1.0.1'

这里发生了什么?我真的厌倦了.net Core,它仍然是它的第一个版本。我在测试版中遇到了很多像这样的问题,但现在事情应该是稳定的...他们已经改变了20次可以改变的东西,API,程序集名称,命名空间,包名,惯例......现在让我们等待工具的预览5,6或25,也许到2035年,EF Core将拥有适当的工具和程序,同时我该死的一百万次投入这项技术!

编辑2:

根据评论,global.json可能是相关的:

{
  "projects": [ "src", "test" ],
    "sdk": {
        "version": "1.0.0-preview2-1-003177"
    }
}

并添加1.0.0-preview2-1-003177文件夹,并且是C:\ Program Files(x86)\ dotnet \ sdk \和C:\ Program Files \ dotnet \ sdk \ <中唯一的文件夹/ p>

1 个答案:

答案 0 :(得分:2)

我不想回答我自己的问题,但我想不会有太多人会进入这条小巷......所以对于那些正在努力解决类似问题的人,我会告诉我,我的项目来自于这个配置。杰森:

...
"buildOptions": {
    "platform": "x86", <- THIS!!!
    "debugType": "portable",
    "preserveCompilationContext": true,
    "emitEntryPoint": true
},

删除“平台”键后,迁移开始重新开始......

我不确定我何时引入了该设置,因为在升级到.NET Core SDK 1.1版之前我没有尝试创建迁移。也许它是从互联网上的一个例子中复制出来的,也许它来自以前的版本,我不知道,但这让我疯了好几天,我希望它可以帮助别人。