為不在啟動項目中的dbContext執行遷移

entity-framework-core

嗨,我剛剛使用ASP.NET Core 1.0和Entity Framework Core 1.0創建了一個新項目。這是我的項目結構:

在此處輸入圖像描述

我希望避免向DataAccess層添加引用,因為所有調用都必須拋出管理器層以保持解耦,我認為WebApi層不應該知道我正在使用什麼DataAccess技術。如果有任何方法不添加對Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"的引用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命令並將ef指向你的dbContext存在的項目,所以我嘗試執行這個

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
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow