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

asp.net-core entity-framework-core

我創建了一個asp.net核心RC2(.NET 4.61框架)項目。

然後我創建了另一個帶有Entity Framework引用的“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核心rc2項目中!

我點擊了該鏈接以查找有關該變通方法的更多信息,但實際上沒有任何幫助,直到我找到該鏈接:

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

由於此前我遇到的錯誤,以下是2個解決方法:

解決方法1 沒有工作(“為了使項目.NET核心應用,添加”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”的執行工作?

熱門答案

您看到的CMD錯誤是一個錯誤 (參見# 4797 ,# 1858 ,# 4555 ,# 5392 )。

我通過重新啟動計算機(Fancy,我知道)在遷移到RC2期間設法克服了這個錯誤。它似乎是固定在內部飼料中,在#1858中也有PR。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow