Entity-framework-code ist sehr langsam, wenn mit Include() um ein Vielfaches

Ich habe einige debugging-slow-code, und es scheint, dass der Täter ist die EF code unten geschrieben. Es dauert 4-5 Sekunden, wenn die Abfrage ausgewertet wird zu einem späteren Zeitpunkt. Ich versuche es in unter 1 Sekunde.

Habe ich getestet, mit der SQL Server Profiler, und es scheint, dass eine Reihe von SQL-Skripts ausgeführt werden. Es bestätigt auch, dass es dauert 3-4 Sekunden, bevor Sie SQL server erfolgt mit den Hinrichtungen.

Ich habe gelesen, ähnliche Fragen über die Verwendung von Include() und es scheint, dass es ein performance-Einbußen, wenn es zu benutzen. Ich habe versucht, den split den untenstehenden code in mehrere verschiedene Abfragen, aber es ist nicht so viel Unterschied.

Irgendeine Idee, wie ich die unten schneller ausführen?

Derzeit die web-app, die ich arbeite, ist nur mit einer leeren iframe während der Wartezeit für die unten zu vervollständigen. Wenn ich nicht schneller Ausführung mal habe ich es aufgeteilt und teilweise laden des iframe mit Daten oder mit anderen asynchrone Lösung. Alle Ideen, die hier auch gewürdigt werden!

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();
        }
  • Was ist Beinhaltet(mit 's')? Ist es eine proprietäre Erweiterung?
  • Ich glaube, es war eine Erweiterung Methode zur Kette gehören unter anderem, wenn das Sinn macht. Ich habe keinen Zugriff auf den code nicht mehr, so kann ich Ihnen nicht genau sagen, was es war, aber das ist meine beste Vermutung, von was ich mich erinnere.
InformationsquelleAutor DSF | 2016-01-11
Schreibe einen Kommentar