クラスライブラリプロジェクトでEFコアの移行を有効にする

.net-core entity-framework entity-framework-core

質問

Models、DbContext、connectionstringなどを定義したクラスライブラリプロジェクトを作成しました。ただし、以下のコマンドを使用して移行を追加することはできません

コマンド

dotnet ef migration add initial

私は以下のエラーが発生しています

エラー

Could not invoke this command on the startup project 'Alan.Pois.Data'. This version of the Entity Framework Core .NET Command Line Tools does not support commands on class library projects in ASP.NET Core and .NET Core applications.

以下はproject.jsonです

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.1",
    "Microsoft.EntityFrameworkCore.Design": { "version": "1.1.0", "type" : "build" },
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0",
    "CommonServiceLocator": "1.3.0"
  },

  "frameworks": {
    "net461": {
    }
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools.DotNet": {
      "version": "1.1.0-preview4"
    }
  }
}

欠けているものはありますか?

敬具、アラン

人気のある回答

私は、クラスライブラリに自分のコンテキスト、モデル、リポジトリを持っています。マイ・マイグレーションは、私のEFコア登録で単純な構成呼び出しを使用して、ツーリングが機能するようにWebプロジェクトに保存されています(私が思っていたのと同じ状況に最適です)。これがあなたのオプションであるかどうかわからない...

これを回避するには、クラスライブラリをアプリケーションとして設定するなどの方法があります。私がやっている方法で、2つのプロジェクト(私の場合はWebアプリケーションとクラスライブラリ)でEFパッケージを参照する必要がありますそれ。私は "あなたのクラスライブラリをアプリケーションとして設定する"のをやっていませんでした。なぜなら、何かを提出に打ち込むように感じるからです。

私のStartup.csからEFセットアップがあります:

services.AddDbContext<MyContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("MyConnectionString"), b => b.MigrationsAssembly("MyStartupProject")));


Related

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