Entity Framework 4: Mauvaises performances avec SQL Server 2008

c# entity-framework performance sql-server-2008

Question

Je développe un logiciel basé sur Entity Framework pour gérer les données dans une base de données MS SQL Server 2008.

[Trouble 1]

Je viens d’essayer d’insérer de petites données ( environ 2 Mo ) de mon programme dans la base de données: les performances sont très mauvaises! Il faut plus d'une minute pour insérer ces données!

J'ai essayé de générer des vues pré-compilées, j'ai les mêmes résultats :-(

Tout mon code utilise une couche de gestion (générée automatiquement à partir d'un fichier .edmx avec un modèle T4) pour gérer les données dans une couche de service. Il est très pratique de naviguer dans les relations d'objets.

Comment puis-je améliorer les performances de ces insertions avec Entity Framework?

[Trouble 2]

De plus, avant d'insérer des données dans la base de données avec la méthode SaveChanges (), je remplis mon contexte d'objet avec la méthode AddObject (). J'ajoute environ 100 000 petits objets (environ 2 Mo) à mon contexte d'objet avec AddObject (): cela prend beaucoup de temps (plus de 10 minutes)!

Comment puis-je diminuer ce temps?

METTRE À JOUR

Mon programme doit économiser plus de 50 Mo de base de données en moins de 2-3 minutes? Pensez-vous que ce sera possible avec EF?

Réponse populaire

Vous pouvez utiliser Entity Framework Profiler pour vérifier le type de code SQL généré. Cet outil a un essai gratuit de 30 jours. Il affirme également qu'il peut effectuer "l'analyse et la détection des pièges courants lors de l'utilisation d'Entity Framework".

Il y a aussi cet article sur le réglage EF

modifier

Sur la base de vos modifications, EF n’est pas la solution. Vous devez effectuer une insertion en bloc afin d’obtenir rapidement les données. Jetez un coup d’œil à ce lien où j’ai aidé une personne à réduire le temps de chargement de 10 heures à 6 minutes.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow