どのようにasp.netコアrc2(.netフレームワーク)EF 7と.net 4.61で動作するようにする

asp.net-core entity-framework-core

質問

私はasp.netコアRC2(.NET 4.61フレームワーク)プロジェクトを作成しました。

次に、Entity Frameworkの参照で別の "DataProvider"ナゲットクラスライブラリ(.NETコア)を作成し、 project.json設定のframework"net461":{}

なぜなら、project.jsonがないので、共通のC#クラスライブラリを作成しなかったのですが、次のような設定が必要です。

{
  "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.

私はasp.netコアrc2プロジェクトに私のDbContextを入れたくない!

私はその回避策についてより詳しく知るためにそのリンクをクリックしましたが、実際にはそのリンクが見つかるまで役立たないことはありません:

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

私が以前に持っていたこのエラーのために2つの回避策が導入されました:

回避策1は機能しませんでした「プロジェクトを.NET Core Appにするには、以下のサンプルの他の設定と一緒にproject.jsonに「netcoreapp1.0」フレームワークを追加してください:」

これが私が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"
        }
      }
    }
  }
}

=>多くのナゲットがインストールされた後に再構築すると、追加したprogram.csも追加する必要がNo executable found matching command "dotnet-ef"ます。このエラーが発生したCMDで「dotnet ef migrations add Init」を再実行します。 No executable found matching command "dotnet-ef"

回避策2が機能しませんでした :( "デスクトップ.N​​ETアプリケーションを作成するには、ターゲット" net451 "またはそれ以上のプロジェクトを作成してください(例" net461 "も機能します)、ビルドオプション" emitEntryPoint "がtrueに設定されていることを確認してください。

=>コンパイル例外が発生するので、program.csにはMainメソッドがありません。

さて、これは決してprogram.csを持っていないクラスライブラリを持っています...次に、静的なMainメソッドでprogram.csを追加しました。今プロジェクトがコンパイルされますが、CMDで "​​dotnet ef migrations added Init"を再実行すると、以前と同じエラーが発生します。

「dotnet ef migrations add Init」の実行を行うにはどうすればよいですか?

人気のある回答

あなたが見ているCMDエラーはバグです (# 4797 、# 1858 、# 4555 、# 5392参照)。

私はコンピュータを再起動してRC2への移行中にこのエラーを克服することができました(ファンシー、私は知っています)。内部のフィードで修正されているようですが、#1858にもPRがあります。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ