2016-08-22 92 views
0

我正在使用帶有EF Core Code First的ASP.NET Core。 我定義的DbContext的依賴注入在我的ASP.NET核心項目的Startup.cs的服務配置像這裏描述(https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html):在其他.NET類庫中使用DbContext

public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddDbContext<TestContext>(options => 
      options.UseSqlServer(Configuration.GetConnectionString("DevelopmentDatabase"))); 
    } 

但我不希望使用的DbContext在控制器就像在同一個站點上描述的一樣,但我想將它與遷移一起外包給另一個.NET Core Class Library項目。

我該如何做到這一點?

+0

摘要與接口的DbContext無論是通過直接或倉庫模式和呼叫連接,從您的控制器 – Nkosi

回答

1

落實存儲庫模式

這顯然說明如下:Building Your First Web API with ASP.NET Core MVC

但註冊庫爲:

services.AddScoped<ICustomerRepository, CustomerRepository>(); 

而不是使用.AddSingleton爲紐帶建議,以避免this other problem

+0

那是我想要做的,但我想在一個額外的項目(最好是.NET核心類庫)中實現存儲庫類。鏈接中的說明解釋瞭如何在單個項目中執行此操作。 – Palmi

+0

只要你在'ConfigureServices'中註冊它就可以在其他程序集上使用它。 –

0

我只是把我的xxxDbContext一個dll庫項目,但決定保留遷移的ASP項目:

protected override void OnConfiguring(DbContextOptionsBuilder b) 
    { 
     base.OnConfiguring(b); 
     b.UseSqlServer("Data Source=...", x => x.MigrationsAssembly("WebApp1")); 

如果你不使用MigrationsAssembly,你的遷移應該去的dll,我相信。

但我在使用的DLL中的另一個項目的問題,我不能主動到數據庫