Я хочу получить доступ к своей базе данных с помощью Entity Framework. Как я могу получить доступ к контексту моей базы данных из этого пакетного файла?
Чтобы использовать сервис с областью действия (например, DbContext et c) из сервиса, размещенного на одном сервере, вы можете создать область, а затем использовать ее для Разрешите требуемые службы из этой области, как показано ниже.
public class MyBatch : BackgroundService
{
public IServiceProvider Services { get; }
public MyBatch(IServiceProvider services)
{
Services = services;
}
protected override async Task ExecuteAsync(CancellationToken stopToken)
{
while (!stopToken.IsCancellationRequested)
{
Console.WriteLine("test");
await Task.Delay(TimeSpan.FromSeconds(10));
await DoWithDb(stopToken);
}
}
private async Task DoWithDb(CancellationToken stoppingToken)
{
//...
using (var scope = Services.CreateScope())
{
var _myDbContext =
scope.ServiceProvider
.GetRequiredService<MyDbContext>();
//code logic here
//...
}
}
}
Подробную информацию о том, как «использовать службы с областью действия в фоновом режиме», можно также найти здесь: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio#consuming -a-область действия-сервис-в-фона задачи