2015-06-23 18 views
5

Pracuję nad aplikacją MVC 5, która używa Entity Framework 6.1.3. Próbuję zoptymalizować pierwsze wywołanie, które zwykle zajmuje 1-4 sekundy, wstępnie generując widoki. Rozumiem, dlaczego tak się dzieje, ale czuję, że gdzieś brakuje jakiegoś ważnego kroku.Wstępne widoki struktury jednostek Entity

Mój obecny test uruchamia tę samą funkcję pięć razy, aby wyciągnąć kolekcję obiektów z mojego DB za pomocą EF. Gdy ten z 'osadzić na wyjściu katalogu' zestawu w moim edmx uzyskać następujące wyniki:

**

  • Pierwszy EF połączenia: 2617 milisekund
  • drugie EF połączenia: 19 milisekund
  • trzecie EF Zadzwoń: 19 milisekund
  • czwarte EF Zadzwoń: 17 milisekund
  • piąte EF Zadzwoń: 20 milisekund

**

Oczekuję od EF generuje miejscowe widoki dostępu do bazy danych ...

Kiedy przełączyć na „Kopiuj do wyjścia katalogu”, sprawdź, że moje pliki są skopiowane do folder bin i mój ciąg połączenia został zaktualizowany, a następnie uruchomić ten sam test uzyskać podobne wyniki:

**

  • Pierwszy EF połączenia: 2546 milisekund
  • drugie EF Zadzwoń: 19 milisekund
  • trzecie EF Zadzwoń: 18 milisekund
  • czwarte EF Zadzwoń: 18 milisekund
  • piąte EF Zadzwoń: 21 milisekund

**

Brak zmiany pierwsze połączenie, co jest dziwne. Dodałem EF Power Tools, kliknąłem prawym przyciskiem myszy na moim edmx => Entity Framework => Generate Views. Plik "Model1.View.cs" został utworzony z ciągiem znaków dla każdej z moich tabel/widoków, więc czułem się, jakbym był na właściwej ścieżce. Po ponownym uruchomieniu testu uzyskałem takie same wyniki. Umieszczenie punktu przerwania w każdej metodzie nowo wygenerowanego pliku "Model1.View.cs" pokazuje, że nigdy nie jest trafiony.

Czy brakuje tu ważnego kroku? W jaki sposób mogę powiedzieć EF, aby używał pliku utworzonego przez EF Power Tools lub w jaki sposób utworzyć katalog kopiowania do wyjścia, tak jak czytałem online?

Odpowiedz

12

O ile pamiętam, narzędzia EF Power Tools nie zostały zaktualizowane, aby obsługiwały EF6. Jeśli masz pewność, że jest to generowanie widoku, które powoduje problem, możesz użyć generowania widoku T4 template lub interaktywnego pre-gegnerated views (tak, jestem twórcą obu). Więcej informacji na temat korzystania z szablonu T4 można znaleźć pod adresem this post. Interaktywne wstępnie wygenerowane widoki są opisane here.

Jednak generowanie widoku w EF6 zostało znacznie ulepszone i stanowi problem tylko w przypadku większych modeli lub w przypadku skomplikowanych hierarchii. Zakładam, że wąskie gardło, które widzisz nie jest spowodowane generowaniem widoku, ale budowaniem modelu.Spójrz na zespół this post autorstwa zespołu EF, który mówi trochę o poprawie wydajności uruchamiania poprzez generowanie natywnych obrazów. Możesz również rzucić okiem na Performance Consideration.

+0

Dziękuję Pawel! –

+0

Zawarłem interaktywne generowane widoki i wygenerowałem natywne obrazy, a moje pierwsze połączenie zostało zredukowane do 458 milisekund. Jesteś niesamowity. –

+0

Cześć Matthew, pracuję nad aplikacją ASP.NET MVC i przetestowałbym twoje rozwiązanie. Gdzie dodałeś kod Pawła? W pliku Global.asax? Zdefiniowałem kontekst bazy danych i edmx w zewnętrznej bibliotece dll. Z góry dziękuję. – jacktric

Powiązane problemy