2016-08-22 34 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中的另一个项目的问题,我不能主动到数据库