C# · Intermediário · Inglês · Técnico
service lifetime
Define quanto tempo o container de DI mantém um serviço: Transient cria uma instância por pedido, Scoped uma por escopo (requisição) e Singleton uma para o app todo.
Onde usar
Aparece ao registrar serviços com AddTransient, AddScoped e AddSingleton. Um Singleton que depende de um Scoped (captive dependency) mantém o scoped vivo para sempre; o ASP.NET Core acusa isso em Development.
Em código
var s = builder.Services;
s.AddSingleton<IRelogio, Real>();
s.AddScoped<AppDb>();
s.AddTransient<IEmail, Smtp>();Exemplos
The DbContext should be scoped, not singleton.
O DbContext deve ser scoped, não singleton.
A singleton can't depend on a scoped service.
Um singleton não pode depender de um serviço scoped.
Cuidado
Não registre como Singleton algo que guarda estado por usuário ou usa DbContext, que não é thread-safe e deve ser Scoped.
Sinônimos
tempo de vida do serviço