Как получить переходный DbContext в ASP.NET MVC Core? - PullRequest
0 голосов
/ 10 декабря 2018

У меня в Startup.cs есть следующее:

services.AddDbContext<MyDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("Sqlite")));

Теперь я бы хотел запустить экземпляр MyDbContext с временным временем жизни.Причина в том, что я заполняю свой кеш при запуске.Итак, как я могу получить экземпляр MyDbContext, который я несу ответственность за себя?У меня готово IServiceProvider.

serviceProvider.GetRequiredService<MyDbContext>();

выдает исключение, которое говорит, что оно выходит за рамки.

Я понимаю, почему выбрасывается исключение, но я не уверенкакой лучший способ обойти это.

1 Ответ

0 голосов
/ 10 декабря 2018

Вам необходимо создать область вручную примерно так:

using (var scope = serviceProvider.CreateScope())
{
    var scopedServices = scope.ServiceProvider; 
    scopedServices.GetRequiredService<MyDbContext>();

     ...
}

. Это даст dbcontext с областью видимости, который будет автоматически удален закрытием области, когда вы закончите его использовать.Во время веб-запросов для каждого запроса автоматически создается область, поэтому она удаляется в конце запроса.

...