Bonjour à tous , je travail sur une application asp.net mvc4 et nous rencontrons des problèmes de performances liés à entity framework ,
le problème est que : une requête sous linq avec des joitures est très lente(15s) même si elle renvoi que 10 lignes et la même requette executé directement sous sql server fait meme pas 1s , alors d'après mes analyses je constate que la lenteur est du l'ors de la phase compilation par ce que EF transforme tout les champs string utiliés dans mes clauses where de varchar=> nvarchar d'ou une conversion implicite derrière .
nous utilisons l'approche : database first.
je suis censé faire cela dans mon context :
le pb est que en mode database first cette méthode n'est appelé qu'une seule fois et mis dans le cache pour les prochains appels ,du
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Properties<string>() .Configure(s => s.HasMaxLength(200).HasColumnType("varchar")); }
coup cette methode ne sera jamais appelé et mon correctif ne sera jamais appliqué
mon correctif c'est genre de dire à entity framework de ne pas changer le type de mes colonnes en nvarchar , il doit garder
les meme type que j'ai en BDD c'est à dire varchar, en esperant que mon pb viendrais de l'a, j'ai egalement desactivez le lazy loading et
AutoDetectChangesEnabled set to false pour tester, mais cela na rien changé
Besoin de piste svp
Partager