【问题标题】:How to make asp.net core rc2 (.net framework) work with EF 7 and .net 4.61如何使 asp.net core rc2 (.net framework) 与 EF 7 和 .net 4.61 一起工作
【发布时间】:2016-09-26 07:53:48
【问题描述】:

我创建了一个 asp.net core RC2(.NET 4.61 框架)项目。

然后我创建了另一个带有实体框架引用的“DataProvider”nuget 类库(.NET 核心),并将project.json 设置中的framework 更改为"net461":{}

我没有创建通用 c# 类库的原因是因为它没有 project.json 但我需要它来设置类似的东西:

{
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
    "Microsoft.EntityFrameworkCore.Tools": {
      "type": "build",
      "version": "1.0.0-preview1-final"
    }
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": {
      "imports": [ "portable-net451+win8" ],
      "version": "1.0.0-preview1-final"
    }
  },
  "frameworks": {
    "net461": {
      "buildOptions": {
        "emitEntryPoint": true
      }
    }
  }
} 

DataProvider 项目有我的 DbContext 类。

于是我进入命令行进入DataProvider目录并执行:

dotnet ef migrations add Init

然后我得到这个错误:

This preview of Entity Framework tools does not support targeting class library projects in ASP.NET Core and .NET Core applications. See http://go.microsoft.com/fwlink/?LinkId=798221 for details and workarounds.

我不想把我的 DbContext 放到 asp.net core rc2 项目中!!!

我单击该链接以查找有关该解决方法的更多信息,但实际上在找到该链接之前没有任何帮助:

https://github.com/aspnet/EntityFramework.Docs/blob/master/docs/cli/dotnet.rst

以下是由于我之前遇到的此错误而引入的 2 个解决方法:

解决方法 1没有工作(“要使项目成为 .NET Core 应用程序,请将“netcoreapp1.0”框架添加到 project.json使用下面示例中的其他设置:")

这就是我后来更改project.json的方式

{
  "frameworks": {
    "netcoreapp1.0": {
      "imports": [ "portable-net451+win8" ],
      "buildOptions": {
        "emitEntryPoint": true
      },

      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0-*"
        },
        "Microsoft.EntityFrameworkCore": "1.0.0-rc2-final",
        "Microsoft.EntityFrameworkCore.Tools": {
          "type": "build",
          "version": "1.0.0-preview1-final"
        }
      },
      "tools": {
        "Microsoft.EntityFrameworkCore.Tools": {
          "imports": [ "portable-net451+win8" ],
          "version": "1.0.0-preview1-final"
        }
      }
    }
  }
}

=> 因为在安装了许多 nuget 并且我重建之后,我还必须添加我添加的 program.cs 等等。然后我在 CMD 上重新运行“dotnet ef migrations add Init”得到这个错误:@987654330 @

解决方法 2没有工作:(“要制作桌面 .NET 应用程序,请确保您的项目目标是“net451”或更高版本(例如“net461”也有效)并确保构建选项“emitEntryPoint”设置为true。”

=> 因为我得到编译异常,那个 program.cs 没有 Main 方法。

好的,我有一个类库,它从来没有 program.cs ... 然后我添加了带有静态 Main 方法的 program.cs。现在项目编译了,但是当我在 CMD 上重新运行“dotnet ef migrations add Init”时,我得到了和以前一样的错误!!!

我应该怎么做才能使“dotnet ef migrations add Init”的执行工作?

【问题讨论】:

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


    【解决方案1】:

    您看到的 CMD 错误是一个错误(请参阅#4797、#1858、#4555、#5392)。

    在迁移到 RC2 的过程中,我通过重新启动计算机克服了这个错误(我知道这很奇怪)。不过,它似乎已在内部提要中修复,#1858 中也有一个 PR。

    【讨论】:

    【解决方案2】:

    你可以试试这个解决方法 - Dotnet EF Migrations for ASP.NET Core

    【讨论】:

    • 那个博客家伙是什么家伙?从 Microsoft pffhhhh 复制/粘贴变通办法.... 这些变通办法甚至不起作用,见上文。这是原始链接:github.com/aspnet/EntityFramework.Docs/blob/master/docs/cli/…
    • 哈哈,我希望它没有那么糟糕 :) 我稍微改变了解决方法,因为我必须将 .net 版本和 buildoptions 放在根级别,而不是在 frameworks 节点下。它适用于我的迁移类库。如果有人需要帮助,请随时给我发推文。
    • @BenCull 嘿,Ben 很好,你在这里找到了:当然,我有像你一样的东西,但我明天会再次检查并在此处相应地更改我的评论。
    • @BenCull 我再次尝试了您的博客文章,这是我的解决方法 1(见上文),对我来说它不起作用,我也无法想象它对您有用,因为:github.com/dotnet/cli/issues/3117#issuecomment-222259502
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2016-10-10
    • 2018-07-10
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 2016-10-15
    相关资源
    最近更新 更多