Seis segundos de calentamiento para la primera entidad framework 6 sin consulta

entity-framework entity-framework-6

Pregunta

De mi prueba de integración:

// Act
Stopwatch w = new Stopwatch();
w.Start();
userService.Create(userDTO);
w.Stop();


public void Create(UserDTO userDTO)
{
    var user = userDTO.ToEntity();
    _context.Entry(user).State = EntityState.Added;
    _context.SaveChanges();
}

6,2 segundos para hacer un "inserto sql" es una locura. Ya veo a los usuarios de la aplicación quejándose cuando abren un proyecto que usan todo el año. Así que todos los días tienen que esperar 6 segundos ...

¿Pensé que el tiempo de calentamiento en EF6 ha mejorado?

¿Hay algo que pueda hacer para mejorar este comportamiento miserable?

Respuesta aceptada

Pruebe la plantilla EF6 CodeFirst View Generation T4 para C # . Las vistas generadas previamente mejoran el tiempo de inicio de la aplicación al mover el trabajo que se tendría que hacer en tiempo de ejecución para diseñar el tiempo. más información


Respuesta popular

No se gasta el tiempo para insertar un dato simple. EF crea el modelo en la memoria, que es donde va el tiempo que pasó.

EF crea el modelo de datos de entidad y ejecuta la generación de vistas (no las vistas de base de datos) por primera vez que realiza una operación en contexto. Echa un vistazo a esta entrada de blog .

Eche un vistazo aquí para mejorar el rendimiento utilizando vistas generadas previamente para disminuir el tiempo de carga del modelo.

Para mejorar el rendimiento, puede iniciar su contexto asíncrono cuando inicie la aplicación. Cuidado con los temas de multiproceso.

using (var context = new MyContext())
{
    context.Database.Initialize(false);
}


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué