如何在 class 库 .NET CORE 中添加 service.AddDbContext

How to add service.AddDbContext in class library .NET CORE

我在一个解决方案中有一个单独的 class 库。该库将作为 NuGet 包发布。

所以,我想将库添加到我的项目中,我必须连接项目的启动来定义它:

services.AddDbContext<DataContext>(options =>     
    options.UseSqlServer(Configuration["ConnectionStrings:LocalConnectionString"]));

但是我的 class 库项目中没有启动项。我如何在我的实际项目的库项目中定义它?

让您的库公开一个扩展点,以便能够与其他想要配置您的库的库集成。

public static class MyExtensionPoint {
    public static IServiceCollection AddMyLibraryDbContext(this IServiceCollection services, IConfiguration Configuration) {
        services.AddDbContext<DataContext>(options => options.UseSqlServer(Configuration["ConnectionStrings:LocalConnectionString"]));
        return services;
    }
}

在主要 Startup 中,您现在可以通过扩展添加您的图书馆服务。

public class Startup {

    public void ConfigureServices(IServiceCollection services) {
        //...

        services.AddMyLibraryDbContext(Configuration);

        services.AddMvc();
    }
}