2009-07-20 10 views
5

Użyliśmy Entity Framework w 2 projektach zarówno z kilkoma 100 stołami.Jakie problemy wystąpiły w Entity Framework?

Nasze doświadczenie jest głównie pozytywne. Mieliśmy duży wzrost wydajności, porównajmy korzystanie z Biblioteki korporacyjnej i procedur przechowywanych.

Jednak, gdy sugeruję użycie EF na stackoverflow, często dostaję negatywne komentarze.

Po stronie negatywnej okazało się, że istnieje pewna krzywa uczenia się dla niektórych funkcji.

Wreszcie na pytanie: Jakie problemy mieli ludzie z EF, dlaczego preferują inne ORMS?

+0

Dobre pytanie; byłoby pomocne, gdyby ludzie zauważyli wersję EF, której użyli w swoich odpowiedziach (v1 lub v4 beta). Dzięki! – TrueWill

Odpowiedz

4

Podobnie jak Ty, moje doświadczenie z EF jest w większości pozytywne. Największym problemem, jaki miałem, było to, że bardzo złożone zapytania mogą zająć dużo czasu. Projektant wizualny jest również znacznie mniej stabilny i ma mniej funkcji niż sama struktura. Szkoda, że ​​framework nie umieściłby atrybutu GeneratedCode na generowanym kodzie.

+0

Możesz wstępnie skompilować złożone zapytania. Spójrz na CompiledQuery. –

+0

Tak, wiem. Naprawdę warto, jeśli chcesz ponownie użyć zapytania, ale nie szybciej, jeśli używasz zapytania tylko raz. –

4

Niedawno użyłem EF i miałem z nim stosunkowo dobre doświadczenia. Również widzę wiele negatywnych opinii na temat EF, co moim zdaniem jest niefortunne, biorąc pod uwagę wszystko, co oferuje.

Jednym z problemów, które mnie zaskoczyło, była różnica w wydajności między dwiema strategiami pobierania danych. Początkowo sądziłem, że robienie ładnego ładowania będzie bardziej efektywne, ponieważ będzie pobierać dane za pomocą pojedynczego zapytania. W tym przypadku dane były zamówione i robiłem duże obciążenie na 5-8 powiązanych tabelach. Podczas rozwoju stwierdziliśmy, że to zapytanie jest zbyt powolne. Za pomocą profilera SQL obserwowaliśmy ruch i analizowaliśmy wynikowe zapytania. Wygenerowana instrukcja SQL była ogromna i SQL Server najwyraźniej nie podobało jej się to wszystko.

Aby obejść ten problem, wróciłem do trybu leniwego ładowania/na żądanie, co spowodowało więcej zapytań do serwera, ale znacznie zwiększyło wydajność. Nie tego się początkowo spodziewałem. Moje zamówienie na wynos, które IMHO spełnia we wszystkich implementacjach dostępu do danych, polega na tym, że naprawdę muszę przetestować dostęp do danych. Dzieje się tak niezależnie od tego, czy mogę używać ORM lub procs SQL lub SQL parametryczne, itp

1

używam Entity Framework zbyt i odkryli następujące wady:

  1. Nie mogę pracować z Oracle, który jest naprawdę potrzebne dla mnie.
  2. Projektant modeli dla architektury Entity. Podczas aktualizacji modelu z części pamięci bazy danych jest również regenerowane. To bardzo nieprzyjemne.
+1

Witam. Czy próbowałeś kiedyś narzędzia Entity Developer (http://www.devart.com/entitydeveloper/) i Devart dotConnect dla dostawcy danych Oracle (http://www.devart.com/dotconnect/oracle/)? Dostawca umożliwia połączenie z serwerami Oracle. Drugi problem jest ustalany za pomocą funkcji mapowania synchronizacji Entity Developer podczas tworzenia modelu. Ta opcja pomaga zmienić tylko obiekty bazy danych za pomocą instrukcji ALTER. Twoje niestandardowe mapowanie zostanie zapisane w tym przypadku. – JackD

0

Nie obsługuje zamiast wyzwalaczy w strukturze Entity.