在其他.NET类库中使用DbContext

时间:2016-08-22 14:39:09

标签: asp.net-core entity-framework-core .net-core

我正在使用ASP.NET Core和EF Core Code First。 我正在我的ASP.NET核心项目的Startup.cs的服务配置中定义DbContext的依赖注入,如此处所述(https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html):

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

但我不想在同一站点描述的控制器中使用DbContext,但我想将它与Migration一起外包给另一个.NET Core Class Library项目。

我如何做到这一点?

2 个答案:

答案 0 :(得分:1)

实施存储库模式

在此明确解释:Building Your First Web API with ASP.NET Core MVC

但是将您的存储库注册为:

services.AddScoped<ICustomerRepository, CustomerRepository>();

而不是使用.AddSingleton作为链接建议,以避免this other problem

答案 1 :(得分:0)

我只是将我的xxxDbContext放在dll库项目中,但决定在asp项目中保留迁移:

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

如果您不使用MigrationsAssembly,您的迁移应该转到我认为的dll。

但是我在另一个项目中使用dll时出现问题,我无法启动与数据库的连接