Warum haben meine vorgefertigten E-Code-Voransichten keine Auswirkung?

8

Ich habe ~ 300 DbSets in meinem Kontext und die erste Abfrage nach dem Laden der App (ein FirstOrDefault () in einem indizierten Feld) dauert ~ 40 Sekunden.

Um dies zu verbessern, versuche ich, vorgefertigte Ansichten in EF 4.3.1 Code First zu verwenden, indem ich die T4-Vorlage hier verwende:

Ссылка

Ich kompiliere es, aber ich sehe keinen Leistungsunterschied. Ich hatte gehofft / angenommen, dass es dem schmerzhaften langsamen Start, den ich erlebe, helfen würde, aber kein Glück.

Sollte es helfen? Wenn nicht, für was genau werden vorgenerierte Ansichten verwendet? Und, kann ich tun um die Startzeit zu verbessern? Es ist schmerzhaft, meinen Kontext aufzuspalten.

    
Scott Stafford 18.07.2012, 14:41
quelle

2 Antworten

5

Es stellt sich heraus, dass es scheinbar nach den vorgenerierten Sichten in der Assembly sucht, wo die erste referenzierte Entität ist, nicht in der Assembly, in der sich der DbContext befindet. Weitere Diskussionen finden Sie hier: Ссылка .

Um dies zu umgehen, habe ich eine neue Entity erstellt und sie in die Assembly des Kontextes eingefügt und sie als erstes DbSet aufgelistet. Jetzt hebt es auf und funktioniert gut (außer dass das lächerlich ist).

    
Scott Stafford 21.08.2012, 18:34
quelle
5

Bestimmte ORMs wie NHibernate und EF sind einfach langsam zu starten. Anstatt zu versuchen, diese Langsamkeit zu "beheben", möchte ich das Problem beheben, indem ich sicherstelle, dass IIS diesen Code auslöst, wenn der App-Pool gestartet wird. Um das Problem zu beheben, müssen Sie IIS so konfigurieren, dass der App-Pool automatisch gestartet wird. Diese Lösung ist nur für .NET 4 und IIS7.5 und höher verfügbar.

Sie möchten eine Klasse mit IProcessHostPreloadClient implementieren, die ObjectContext lädt und Ihre Anwendung so konfiguriert, dass sie einen serviceAutoStartProviders-Knoten zur Datei web.config hinzufügt und startMode="AlwaysRunning" für den App-Pool Ihrer Anwendungen festlegt.

Siehe Scott Gus Blog für Details.

    
Mithon 21.07.2012 16:29
quelle