2016-06-19 6 views
-1

ich ein Usercontrol in wpf haben, die eine Gridcontrol enthält Ich habe Datenquelle zu einer Linq gesetzt Gridcontrol auf ef Abfrage wie folgt verbinden:wpf Gridcontrol bindint auf ef Abfrage LIQ ist langsam

var x = from B in x.B join E in X.E on B.E_ID equals E.E_ID 
     select B 
gridcontrol.datasource = x.tolist(); 

in XAML-Code ich habe als diese eingestellte Grid-Control-Spalt:

erste Spalte FieldName = ID

zweite Spalte FieldName = E.Name

, da die zweite Spalte E Tabelle binded wird, ist die Gridcontrol Laden awfuly langsam

plz geben Sie mir eine Lösung, die die Geschwindigkeit

+0

Aufruf 'ToList()' auf Ihre Anfrage nicht notwendig ist, ist eine Sammlung eine Sammlung und die Grid-Control wird wissen, was damit zu tun . Damit ist Ihre Anfrage so einfach wie möglich. Wenn das nicht schnell genug für Sie ist, müssen Sie in Betracht ziehen, einige Indizes auf Ihren Datenbanken zu setzen oder zu setzen ... die Langsamkeit ist wahrscheinlich nicht von Ihrem Code hier. –

+0

danke Freund, aber ich habe getestet mit und ohne .tolist() und überprüft viele Möglichkeiten.Wenn ich die zweite Spalte löschen funktioniert es gut und GridControl laden sehr schnell, aber das Problem ist, ich brauche die zweite Spalte.Wenn ich Breakpoint verwenden die Abfrage Rückgabewert schnell aber die Codezeile, die Gridcontrol Datenquelle dauert lange – pooooooneh

+0

@pooooooneh "* Wenn ich Haltepunkt verwenden die Abfrage Rückgabewert schnell *" Die Abfrage wird nicht ausgeführt, bis Sie materialisieren entweder durch Aufzählung oder Aufruf von 'ToList' und ähnlich. Da Sie nur "B" in der Abfrage auswählen, sehe ich nicht, wie es hilft, "E.Name" zu erhalten. Wenn 'E' lazy geladene Navigationseigenschaft ist, sollten Sie besser eifrig laden (etwas wie' db.B.Include (b => bE) .ToList() ') –

Antwort

0

mit vielen Dank von lvan Stoev wie er/sie zu erhöhen, änderte ich meine Abfrage und es war nützlich. Jetzt dauert es nur 8 Sekunden, um das usercontrol zu laden. die Abfrage. db.b.include („E“) ToList()