如何使asp.net核心rc2(.net框架)与EF 7和.net 4.61一起使用

时间:2016-05-27 21:34:06

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

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

然后我创建了另一个带有Entity Framework引用的“DataProvider”nuget类库(.NET core),并将framework设置中的project.json更改为"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核心rc2项目!!!

我点击该链接以查找有关该变通办法的更多信息,但实际上没有任何帮助,直到我找到该链接:

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

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

解决方法1 工作(“要使项目成为.NET Core App,请将”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"
        }
      }
    }
  }
}

=>因为在安装了很多nugets并重建之后我还要添加一个我添加的program.cs等等。然后我在CMD上重新运行“dotnet ef migrations add Init”,收到此错误:No executable found matching command "dotnet-ef"

解决方法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”的执行工作?

2 个答案:

答案 0 :(得分:2)

您看到的CMD错误是错误(请参阅#4797,#1858,#4555,#{{3 }})。

我通过重新启动计算机(Fancy,我知道)在迁移到RC2期间设法克服了这个错误。它似乎固定在内部馈送中,但#1858中也有PR。

答案 1 :(得分:0)

您可以尝试此解决方法 - Dotnet EF Migrations for ASP.NET Core