asp.net-core - 无法使用 EF Core 1.1 创建迁移

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

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

我的项目是在完整框架 (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(它也设置了 eagerEntryPoint:true)

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 上运行...

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

如果是这样,怎么做?

编辑:

将项目定位到 .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,而且它仍处于第一个版本。当它处于测试阶段时,我遇到了很多这样的问题,但现在事情应该是稳定的......他们已经改变了二十倍所有可以改变的东西,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>

最佳答案

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

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

删除“平台”键后,迁移再次开始工作......

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

关于asp.net-core - 无法使用 EF Core 1.1 创建迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068199/

相关文章:

c# - Asp.Net Core SAML 响应签名验证

c# - 当远程 SQL Server 数据库的 scaffold-DbContext 时,构建失败

c# - 数据库操作预计影响 1 行,但实际影响 0 行

C# Linq 查询执行顺序

c# - 在 Blazor .net core 应用程序中查找连接字符串时出错

angular - ASP.net Core 中的加密和 Angular 中的解密

c# - 在 Core Web API 中通过可选参数删除多条记录的最佳实践是什么?

javascript - .NET Controller 未命中 - GET 方法

c# - "dotnet ef database update"以编程方式使用 Entity Framework Core

typescript - VSO ASP.NET5 CI 构建期间出错 - "Your project uses a different version of the TypeScript compiler"但我没有使用 TypeScript