| 

.NET C# Java Javascript Exception

2
Ich habe ein "kleines" Problem mit meiner WPF Anwendung. Der erste Zugriff auf meine DB findet im Window_Loaded Event statt um zwei Comboboxen mit Werten aus der DB zu füttern. Das dauert so zwischen 17 und 30 Sekunden. In dieser Zeit ist auch das gesamte Formular blockiert. Jeder weitere Zugriff gaht dann wesentlich schneller (ca. 1-2 sek.).

Kann man den Zugriff nicht irgendwie beschleunigen?

Ich lasse jetzt zumindest ein kurzes Infofenster einblenden, dass der Mensch bitte etwas warten soll, aber schön finde ich das nicht.
News:
24.02.2015
tschroeer 35 4
2 Antworten
0
Ich kenne das Entity-Framework nicht so gut, aber ich vermute mal, dass bei deinem ersten Zugriff das Mapping initialisiert wird. Eine Möglichkeit wäre, einen Dummy-Zugriff auf die Datenbank beim Start der Anwendung durchzuführen (z.B. während der Splash-Screen angezeigt wird). Dann dauert zwar der Start länger, aber das wird erfahrungsgemäß vom Anwender eher toleriert als blockierte Eingabemasken. Möglicherweise bietet das EF ja auch Optionen, wleche die Performance des initialen Mappings beeinflussen. Aber wie gesagt, ich kenne das EF zu wenig.

Gruß
Klaus
25.02.2015
luedi 2,0k 1 9
Hallo Klaus,

der Start der App dauert sowieso schon so zwischen 20 und 30 Sekunden. Ich habe das jetzt mal mit dem SplashScreen versucht, das Ergebnis:

beim allerersten Abruchen von Daten wird die gesamte Anwendung blockiert. Der Vortschrittsbalken wird nicht angezeigt und läuft auch nicht. Und wenn ich den ersten Datenabruf in einem BackgroundWorker auslagere sieht das genauso aus.

Ich kann noch nicht einmal ein AnimatedGIF abspielen.

Kan man nicht wenigstens das cachen abschalten, solbst wenn dann die einzelnen Abfragen dann etwas länger dauern?
tschroeer 26.03.2015
Wenn ich einen Splash-Screen verwende, lasse ich den in der Regel in einem separaten Thread laufen. Dann funktioniert auf jeden Fall das Animated gif.
luedi 27.03.2015
0
Je nach Version des EF gibt es für jede EntityCollection (DbSet oder Context.Set<>()) eine Load bzw. LoadAsync - Methode. Hierbei werden die Daten explizit (vor)geladen.
26.02.2015
lbm1305 849 1 8
Ich verwende das EF 5 mit DB First und eine solche Load oder LoadAsync ist mir dort nicht untergekommen
tschroeer 26.03.2015
Hmm...eben noch einmal probiert. Ergebnis =>
var testEntities = new TestEntities();
testEntities.Countries.Load();

mit nuget - Package
EntityFramework 5.0.0 (this version) 2308579 Saturday, August 11 2012
lbm1305 26.03.2015

Stelle deine .net-Frage jetzt!