Как получить регистрацию dbcontext в классе запуска для справки? - PullRequest
0 голосов
/ 09 июля 2020
• 1000 *
public void ConfigureServices(IServiceCollection services)
{
   ...
   var dbContextOptions = new DbContextOptionsBuilder<cataDBContext>()
            .UseSqlServer(Configuration.GetConnectionString("SqlServerConnect"))
            .Options;
        //*****************************************************************************

        services.AddSingleton(dbContextOptions);
        // Finally register the DbContextOptions:
        services.AddSingleton<cataDBContextOptions>();
        // This Factory is used to create the DbContext from the custom DbContextOptions:
        services.AddSingleton<IContextDBFactory, ContextDBFactory>();
        // Finally Add the Applications DbContext:
        services.AddDbContext<cataDBContext>();

        services.AddEventBusHandling(EventBusExtension.GetHandlers(Configuration));
   ...
}

Как я могу получить и отправить контекст в EventBusExtension.GetHandlers () ?

1 Ответ

0 голосов
/ 10 июля 2020

Чтобы получить экземпляр в автозагрузке, вы можете использовать следующий код:

//1.Register the service
services.AddDbContext<MyDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("YourConnnectionString")));

//2.Build an intermediate service provider
var sp = services.BuildServiceProvider();

//3.Resolve the services from the service provider
var myDbContext = sp.GetService<MyDbContext>();  

//4.then you could pass the myDbContext to the EventBusExtension.GetHandlers()
...