Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

302
Visualizações
Inyectar Context Ef core al proyecto Worker Service

quiero inyectar mi contacto para proyectar y usar el contexto en los trabajadores:

 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>(); }); }

trabajadores:

 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; } // ... }

pero tengo este error:

Algunos servicios no se pueden construir (Error al validar> el descriptor de servicio ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: Worker1': No se puede consumir el servicio de ámbito 'XContext' de singleton

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En su lugar, debe inyectar IServiceProvider en el servicio alojado y luego, cuando necesite un XContext :

 using (var scope = _serviceProvider.CreateScope()) { var context = scope.GetRequiredService<XContext>(); // ... }

DBContext está destinado a ser de corta duración, así que no caiga en la tentación de crear uno cuando se inicie su servicio y manténgalo durante el tiempo de vida del servicio. En su lugar, debe crearlos, usarlos brevemente y luego desecharlos, cuando sea necesario.

En el ejemplo anterior, el alcance se encargará de desechar el contexto; no es necesario, y no debe, hacerlo usted mismo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda