i want inject my contect to project and use context in workers :
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddDbContext<XContext>(options =>
{
options.UseSqlServer(
hostContext.Configuration["ConnectionStrings:Connection"],
serverDbContextOptionsBuilder =>
{
var minutes = (int)TimeSpan.FromMinutes(3).TotalSeconds;
serverDbContextOptionsBuilder.CommandTimeout(minutes);
serverDbContextOptionsBuilder.EnableRetryOnFailure();
});
});
//services.AddTransient<XContext>();
//services.AddTransient<XContext>();
services.AddScoped<XContext>();
//workers
services.AddHostedService<Worker1>();
services.AddHostedService<Worker2>();
});
}
workers :
public class Worker1: BackgroundService
{
private readonly ILogger<Worker1> _logger;
private readonly IConfiguration _configuration;
private readonly TookoContext _uow;
public Worker1(ILogger<Worker1> logger, IConfiguration configuration, XContext uow)
{
_logger = logger;
_configuration = configuration;
_uow = uow;
}
// ...
}
but i have this error :
Some services are not able to be constructed (Error while validating> the service descriptor ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: Worker1': Cannot consume scoped service 'XContext' from singleton