Imagem de fundo

Em uma interface de programação de aplicações (API) ASP.NET Core com Entity Framework C...

Em uma interface de programação de aplicações (API) ASP.NET Core com Entity Framework Core (EF Core) em produção, deseja-se evitar concorrência indevida e dependência cativa envolvendo DbContext. Qual é a adequada configuração de lifetimes?


A

DbContext Scoped (por requisição Hypertext Transfer Protocol – HTTP) e repositórios também Scoped, garantindo instância isolada por request e evitando capturar serviços de vida curta em serviços de vida longa.


B

Registrar DbContext como Singleton por ser “thread-safe” e maximizar cache de primeiro nível, mantendo uma única instância global que “aproveita” o pool de conexões como parte do próprio contexto.


C

DbContext Transient com repositórios Singleton, usando repositórios como ponto central estável enquanto o contexto é recriado a cada injeção.


D

DbContext Singleton e ILogger Scoped, “equilibrando” persistência do contexto com logs por requisição, assumindo compartilhamento seguro de estado entre threads.


E

DbContext Scoped e loggers Transient “para capturar contexto por chamada”, partindo da premissa de que loggers devem variar de instância a cada log e que scopes não são suportados por logging Singleton.