L'entité code de la structure est lente lors de l'utilisation de l'Inclure() plusieurs fois

J'ai été le débogage d'une certaine lenteur code et il semble que le coupable est l'EF code affiché ci-dessous. Il faut 4-5 secondes lorsque la requête est évaluée à un stade ultérieur. Je suis en train de le faire fonctionner en moins de 1 seconde.

J'ai testé ce à l'aide de SQL Server Profiler, et il semble qu'un tas de scripts SQL sont exécutées. Il confirme également qu'il faut 3 à 4 secondes avant de SQL server est fait avec les exécutions.

J'ai lu d'autres questions similaires à propos de l'utilisation de include() et il ne semble pas qu'il y est une baisse des performances lorsque vous l'utilisez. J'ai essayé de diviser le code ci-dessous dans plusieurs requêtes différentes, mais il ne fait pas beaucoup de différence.

Une idée de comment je peux obtenir le ci-dessous pour une exécution plus rapide?

Actuellement l'application web, je travaille sur est de montrer le vide de l'iframe en attendant le ci-dessous pour compléter. Si je ne peux pas obtenir une exécution plus rapide de temps que j'ai à les diviser et partiellement à la charge de l'iframe avec des données ou aller avec une autre solution asynchrone. Toutes les idées ici serait également appréciée!

using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
        {
            formInstance = context.FormInstanceSet
                                .Includes(x => x.Include(fi => fi.FormDefinition).Include(fd => fd.FormSectionDefinitions).Include(fs => fs.FormStateDefinitionEditableSections))
                                .Includes(x => x.Include(fi => fi.FormDefinition).Include(fd => fd.FormStateDefinitions))
                                .Includes(x => x.Include(fi => fi.FormSectionInstances).Include(fs => fs.FormFieldInstances).Include(ff => ff.FormFieldDefinition).Include(ffd => ffd.FormFieldMetaDataDefinition).Include(ffmdd => ffmdd.ComplexTypePropertyNames))
                                .Include(x => x.CurrentFormStateInstance)      
                                .Include(x => x.Files)
                                .FirstOrDefault(x => x.FormInstanceIdentifier == formInstanceIdentifier);

            scope.Complete();
        }
  • Qu'est-ce que Comprend(avec un "s")? C'est une extension propriétaire?
  • Je crois que c'était une méthode d'extension de la chaîne d'inclure, notamment si cela a du sens. Je n'ai pas accès au code plus donc je ne peux pas vous dire exactement ce que c'était mais c'est ma meilleure supposition de ce que je me souviens.
InformationsquelleAutor DSF | 2016-01-11