Temps de préchauffage de six secondes pour la première entité framework 6 non requête

entity-framework entity-framework-6

Question

De mon test d'intégration:

// 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 secondes pour faire un "insert SQL" est fou. Je vois déjà les utilisateurs de l'application se plaindre lorsqu'ils ouvrent un projet qu'ils utilisent toute l'année. Donc, chaque jour, ils doivent attendre 6 secondes ...

Je pensais que le temps de préchauffage dans EF6 s'était amélioré?

Y a-t-il quelque chose que je puisse faire pour améliorer ce comportement misérable?

Réponse acceptée

Essayez le modèle EF6 CodeFirst View Generation T4 pour C # . Les vues pré-générées améliorent le temps de démarrage de l'application en déplaçant le travail à exécuter lors de l'exécution pour permettre la conception. Plus d'informations


Réponse populaire

Le temps n'est pas passé pour insérer une simple donnée. EF crée le modèle dans la mémoire, c'est là que le temps que vous avez passé va aller.

EF crée Entity Data Model et exécute la génération de vues (pas les vues de base de données) pour la première fois que vous effectuez une opération sur un contexte. Regardez ce blog .

Jetez un coup d'œil ici pour améliorer les performances en utilisant des vues pré-générées pour réduire le temps de chargement du modèle.

Pour améliorer les performances, vous pouvez initialiser votre contexte de manière asynchrone lorsque vous démarrez votre application. Méfiez-vous des problèmes de multithreading.

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi