Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Sehr lange Ladezeiten mit EF + MySQL
Akhanto
myCSharp.de - Member



Dabei seit:
Beiträge: 29

Themenstarter:

Sehr lange Ladezeiten mit EF + MySQL

beantworten | zitieren | melden

verwendetes Datenbanksystem: EF 6 + MySQL

Hi,
der Versuch, ca. 120 Datensätze mithilfe von EF aus einer MySQL Datenbank abzufragen war leider sehr frustrierend. Es dauert über 15 Sekunden, bis die Abfrage fertig ist.

Ist das ein generelles Problem dieser Kombination oder liegt es eher an der Abfrage?

Ich habe mich an dieses Tutorial gehalten, um das Programm zu erstellen.

Daher dieser Code zur Abfrage:

        public virtual IList<T> GetAll(params Expression<Func<  T, object >>[] navigationProperties)
        {
            List<T> list;
            using (var context = new ClanDBEntities(Helper.ConnectionStringBuilder.DefaultBuilder()))
            {
                IQueryable<T> dbQuery = context.Set<T>();

                //Apply eager loading
                foreach (Expression<Func<T, object>> navigationProperty in navigationProperties)
                    dbQuery = dbQuery.Include<T, object>(navigationProperty);

                list = dbQuery
                    .AsNoTracking()
                    .ToList<T>();
            }
            return list;
            
        }

Die Zeile im Code, die dann hängt ist diese hier:

            IList<t_members> memList = businessLayer.GetAllMembers();

Vielen dank schon mal,
Akhanto
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Akhanto am .
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hi,

nur beim ersten mal? EF6 braucht recht lang für die "view generation" zur laufzeit.

Das sollte beim 2. Versuch allerdings gegessen sein. Man die view Generation allerdings auch zur Compilezeit ausführen. (sollte ein haken in den Properties des Models sein).
private Nachricht | Beiträge des Benutzers
Akhanto
myCSharp.de - Member



Dabei seit:
Beiträge: 29

Themenstarter:

beantworten | zitieren | melden

Hab zum Test einen Button eingefügt, mit dem ich die IList neu lade und dann das Grid, dauert genau so lange.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16145

beantworten | zitieren | melden

Nimm nen Profiler zur Hand und schau Dir damit an, was genau die Zeit frisst.
So ist das heiteres Rumraten (wobei ich die massenhafte Reflection hier nicht unproblematisch finde; generell evtl. nicht unbedingt das "beste" Generic Repository-Beispiel).
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Akhanto
myCSharp.de - Member



Dabei seit:
Beiträge: 29

Themenstarter:

beantworten | zitieren | melden

Anbei ein Screenshot der Abfrage. Das sieht alles ziemlich zeitintensiv aus.
Jemand ne Idee?
Abt hast du ein besseres Beispiel dafür?

Liebe Grüße
Akhanto
Attachments
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16145

beantworten | zitieren | melden

Einführung in die Leistungsprofilerstellung
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Akhanto
myCSharp.de - Member



Dabei seit:
Beiträge: 29

Themenstarter:

beantworten | zitieren | melden

Dankeschön!!!
Ich hab's gefunden.
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Akhanto am .
private Nachricht | Beiträge des Benutzers
Rioma
myCSharp.de - Member



Dabei seit:
Beiträge: 228

beantworten | zitieren | melden

Vielleicht noch kurz zu Info für die "Nachwelt" wo das Problem lag?

Hilft sonst natürlich keinem anderen :)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Rioma am .
private Nachricht | Beiträge des Benutzers
Akhanto
myCSharp.de - Member



Dabei seit:
Beiträge: 29

Themenstarter:

beantworten | zitieren | melden

Oh ja, natürlich. Auch wenn das Problem letztendlich eine Eigenproduktion war. Vielleicht dient es ja als Lehrbeispiel für Anfänger.

Das Problem lag hier, im Nachhinein wohl extremst ungeschickt gelöst.

        public IList<t_members> GetAllMembers()
        {
            IList<t_members> tempMembersList = _membersRepository.GetAll();
            //foreach (t_members m in tempMembersList)
            //{
            //    m.IsTrial = true && GetTrialmemberById(m.P_member_ID) != null;
            //    if (GetTrialmemberById(m.P_member_ID) != null)
            //        m.Notes = GetTrialmemberById(m.P_member_ID).note;
            //}
            return tempMembersList;
        }

Genauer gesagt war es die foreach Schleife.

Vielen Dank für die Hilfe, der Leistungstest war mir neu.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Akhanto am .
private Nachricht | Beiträge des Benutzers