Compartir a través de


Temas de pruebas avanzadas

En esta página se describen algunos temas menos comunes relacionados con la prueba de aplicaciones de EF Core.

HabilitarCachéDelProveedorDeServicios

EF Core usa un proveedor de servicios interno para administrar los servicios necesarios para las operaciones de base de datos, incluida la compilación de consultas, la creación de modelos y otras funciones principales. De forma predeterminada, EF Core almacena en caché estos proveedores de servicios internos para mejorar el rendimiento cuando varias DbContext instancias comparten la misma configuración.

El EnableServiceProviderCaching método controla si EF Core almacena en caché el proveedor de servicios interno:

public class ApplicationDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder
            .EnableServiceProviderCaching(false)
            .UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Test");
    }
}

Comportamiento predeterminado: el almacenamiento en caché del proveedor de servicios está habilitado de forma predeterminada (true). Esto significa lo siguiente:

  • Los proveedores de servicios se almacenan en caché y se reutilizan entre DbContext instancias con la misma configuración
  • Mejor rendimiento para las aplicaciones que crean muchas DbContext instancias
  • Reducción de la sobrecarga de memoria cuando varios contextos comparten configuraciones

Cuándo deshabilitar el almacenamiento en caché: deshabilitar el almacenamiento en caché del proveedor de servicios ralentizará DbContext considerablemente la creación y, en la mayoría de los casos, se recomienda el comportamiento predeterminado. Si hay problemas con servicios internos incorrectos usados, deben corregirse de una manera diferente. Pero si va a reemplazar los servicios con fines de prueba, podría deshabilitar el almacenamiento en caché del proveedor de servicios (false) para asegurarse de que cada prueba obtiene un proveedor de servicios nuevo.