PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Entity Framework 6.0 - Erster Zugriff langsam



Co3dr
08.10.2014, 15:37
Hi,
Gibt es eine möglichkeit, die erste Abfrage zu beschleunigen?
Wenn ich eine simple Abfrage sende dauert das dass erste mal ca. 20 Sek, danach geht es schnell.
Ich habe es mit Caching der Views probiert, jedoch wenn ich eine Technik davon nutze habe ich keine bessere Perfomance der erste start dauert immer noch 20 Sekunden.

Ich benutze das neuste EF 6 und Code First

fanderlf
08.10.2014, 21:11
Mach doch einfach eine erste Abfrage wenn Du Dein Programm startest. Diese brauchst Du ja nicht auswerten. So ein Art Warmup. Natürlich ist es schon merkwürdig, dass der erste Zugriff solange dauert, das kann aber sehr viele Gründe haben.

Co3dr
09.10.2014, 08:51
Danke für die Antwort, aber das muss schneller gehen ich habe noch mal nachgeschaut es gibt eine Möglichkeit das erste laden durch Pre-generated Views zu erstellen nur funktioniert das nicht so wie ich das verstehe. Meine Frage ist deshalb, kennt sich damit jemand aus?

Markus Lahr
09.10.2014, 09:38
kennt sich damit jemand aus?
Eventuell...
Aber ohne Kenntnis der verwendeten Software (MS SQL Server ?) sowie des Quellcodes (wohl ASP.NET) wird das ein Stochern im Nebel.

Co3dr
17.10.2014, 13:34
SQL Server und C# mit Winforms.
ich konnte das Problem aber mittlerweile lösen, der trick ist mit dem edmx zu arbeiten, daraus lassen sich drei Dateien erzeugen, welche man beim Connectionstring angeben kann.
Dadurch konnte ich den Start der Anwendung von 24 Sekunden auf 1 Sekunde und die erste Abfrage auf 4 Sekunden verkürzen. Die zweite Abfrage hatte dann sogar nur noch 0,005 Sekunden gedauert.
Man muss nur darauf achten das edmx aktuell zu halten.

Danke für die schnellen Antworten und die Mühe mir zu helfen :)

gfoidl
17.10.2014, 16:36
Hallo,

kurz zur Erklärung warum es bei Code First so lange beim 1. mal dauert und zwar da das Modell erst durch Reflection aus den Klassen abgeleitet werden muss. Wenn kein eigenes Mapping verwendet wird, so muss sogar per Konvention das Modell erstellt werden und das ist halt ziemlich aufwändig und Reflection per se langsam.

Wenn mit EDMX gearbeitet wird, also Model-First bzw. Database-First, so existiert das Modell schon und muss nicht erst erzeugt werden.
D.h. bei Code-First wird sozusagen das EDMX erst zur Laufzeit erstellt.

mfG Gü