起動プロジェクトにないdbContextの移行を実行する

entity-framework-core

質問

こんにちは、私はちょうどASP.NETコア1.0とエンティティフレームワークコア1.0を使用して新しいプロジェクトを作成しました。これは私のプロジェクトの構造です:

ここに画像の説明を入力

私は、すべてのコールがマネージャ層をスローして、デカップルされた状態を維持する必要があるため、DataAccessレイヤーにレフェレンスを追加することを避けたいと思います.WebApiレイヤーでは、私が使用しているDataAccessテクノロジーについて知っていないはずです。 Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"への参照を追加しない方法がある場合Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" Commercify.DataAccess.Catalogで追加しようとしましたが、記載されていないエラーが発生しました。ライブラリでサポートされているクラスです。

Commercify.DataAccess.Catalogに次のdbContextを作成しました。

  public class CatalogDbContext: DbContext
{
    public CatalogDbContext(DbContextOptions<CatalogDbContext> options) 
        : base(options)
    { }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=(local)\SQLEXPRESS;Database=Commercify;Trusted_Connection=True;");
    }

    public DbSet<CategoryEntity> Categories { get; set; }
}

今度は私がインストールしたエンドにマイグレーションを追加できるようにしたい:Commercify.WebApiで以下のアセンブリ:

   "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
     ...
    "Microsoft.EntityFrameworkCore.Design": "1.0.0-preview2-final"
  },
  "tools": {
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
  },

私が今したいのは、移行を追加することです。そのためには、以下を実行しました:

dotnet ef migrations add Init

そして私は次のエラーを受け取りました:

アセンブリ 'Commercify.WebApi'にDbContextが見つかりませんでした。正しいアセンブリを使用していること、およびそのタイプが抽象的でも汎用的でもないことを確認してください。

私はdnxが使用されたときに、-pコマンドを追加して、あなたのdbContextが存在するプロジェクトにefをポイントすることを思い出したので、これを実行しようとしました

dotnet ef migrations add Init -p Commercify.DataAccess.Catalog

そして私は次のエラーを受け取りました:

認識できないオプション '-p'

スタートアッププロジェクトにないdbContext用の移行ツールを実行するにはどうすればよいですか?

受け入れられた回答

私が知る限り、RTMでこれを行う唯一の方法は、コンテキストを含むプロジェクトからの移行を実行することです。この記事では、動作させるプロセスを概説します。うまくいけば、マイクロソフトはすぐにこれを修正する予定です。

http://benjii.me/2016/06/entity-framework-core-migrations-for-class-library-projects/



Related

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