Czy Entity Framework jest gotowy do produkcji? [Zamknięte]

10

Szukam Entity Framework dla nowego projektu, który zamierzam podjąć i w ramach moich badań pytam niektórych specjalistów z branży, czy jest stabilny i gotowy do wdrożenia w „prawdziwym świecie”.

W biegu jest:

  • EF
  • NHibernate
  • DevExpress XPO

Mam już duże doświadczenie z XPO, ale nie jestem z tego szczególnie zadowolony.

Steven Evers
źródło

Odpowiedzi:

8

Tak, ale z pewnymi zastrzeżeniami:

  • Jest w pełni obsługiwany przez Microsoft i ma rosnącą społeczność - ale jest nowszy niż jego najbliższy konkurent, nHibernate, wciąż nie ma tak dojrzałej społeczności.

  • Wraz z mniej dojrzałą społecznością będą chwile, gdy funkcja będzie dostępna z EF4, ale ledwo udokumentowana; lub EF4 zgłosi wyjątki, w których Google nie może ci pomóc.

  • Jest w pełni funkcjonalny, gdy jest używany zgodnie z intencjami Microsoft, ale z mojego doświadczenia może być dość trudny do modernizacji w istniejącym systemie. Idealnie będziesz go używać w scenariuszu typu greenfield ze 100% stosem Microsoft. Z pewnością jest wystarczająco elastyczny, aby ingerować w inne systemy, ale znacznie zwiększa to trudność.

Jednak, aby powtórzyć główny punkt, jest on kompletny i wystarczająco stabilny do użytku produkcyjnego.


Jedną z kluczowych rzeczy, na które należy zwrócić uwagę, co wydaje się oczywiste, ale często jest pomijane, dopóki nie spowoduje bólu, jest to, że ORM działa w celu odwzorowania paradygmatu relacji na paradygmat OO. Jeśli któryś z tych poziomów nie będzie przestrzegał zasad odpowiedniego paradygmatu, poczujesz dodatkowe cierpienie.

Może to przebiegać w obie strony - jeśli jesteś dobrze zaznajomiony z paradygmatem SQL i OOP opartym na relacjach / zestawach, ORM pozwoli obu mieszać się jak masło. Jeśli twoja baza danych wygląda na to, że chce być OO, a twój OO-code wygląda na oparty na rekordach, to YMMV.

STW
źródło
+1: Dzięki za informację. Na szczęście projekt jest projektem typu greenfield prawie w całości na stosie .NET (wciąż debatuje między serwerem mysql a sql), i najpierw będę modelował domenę (i mam nadzieję, że wygeneruję strukturę tabeli)
Steven Evers,
@SnOrfus: FWIW Ostatnio zacząłem używać EF na MySQL i naprawdę mi się to podoba.
Eric King,
5

Używamy EF w kilku aplikacjach produkcyjnych. Mamy również NHibernate w kilku aplikacjach produkcyjnych. Komentarz STW, że EF działa najlepiej „gdy jest używany zgodnie z intencjami Microsoft”, jest z pewnością prawdziwy. Prawdą jest również, że NHibernate działa najlepiej, gdy jest stosowany zgodnie ze wzorami, które zamierzał zespół NHibernate. Nie mam wiedzy ani doświadczenia z XPO.

Nie żałuję wprowadzenia NHibernate do produkcji.
Nie żałuję wprowadzenia Entity Framework do produkcji.

Jednym z czynników napędzających użycie EF była integracja z LINQ. Wiem, że NHibernate wykonał również dużo pracy z LINQ, ale jak dotąd nie miałem czasu, aby to zbadać.

Jim Reineri
źródło
Praca z obu jest to świetny sposób, aby dowiedzieć się, jak pracować z obu. To trochę jak nauka zarówno VB.NET, jak i C # - zadajesz pytania, gdy widzisz różnice, a zadawanie tych pytań znacznie poprawia twoje zrozumienie w końcu.
STW,
3

Używamy EF4.1 z podejściem Code First w naszym projekcie internetowym i, jak już wcześniej wspomniano, utrzymanie użytkowania zgodnie z zamierzeniami Microsoft pozwoli uniknąć wielu problemów.

Można jednak zauważyć, że system nie jest jeszcze naprawdę dojrzały i mówię to, ponieważ:

  1. Zachowanie wciąż bardzo się zmienia (w porównaniu z CTP5 do 4.1)
  2. Generator LINQ to Entities obsługuje tylko podstawowe typy (Int, String, lot)
  3. Niektóre rzeczy nie działały całkowicie intuicyjnie podczas próby scalenia w istniejących zestawach danych
    1. Nie pozwala na tworzenie definicji tabel tylko dla niektórych zestawów danych
    2. Odwzorowanie pól, takich jak czasy danych, wymaga googlingu.
  4. Zobacz inne znane problemy
Alessandro Vermeulen
źródło
2

W rzeczywistości nie wykorzystałem pełnego stosu, ale używamy go fragmentarycznie w naszym produkcie i wydaje się dość dojrzały, chociaż musieliśmy dostosować niektóre elementy do naszych potrzeb.

matiash
źródło
0

Tak myślałbym. Używam kodu EF4 jako pierwszy (CTP) do tworzenia aplikacji sieci Web dla wielu dzierżawców.

Jakub Konecki
źródło
+1 - Tak, przeprowadziłem coaching w zespole, który intensywnie wykorzystał go w bardzo dużym projekcie korporacyjnym i działał całkiem dobrze. Tak było z pierwszą wersją, a nie najnowszą. Jestem pewien, że korzystanie z najnowszej wersji jest w 100% bezpieczne.
Nie wiem, w jaki sposób możesz być w 100% pewien oprogramowania, którego w rzeczywistości nie uruchomiłeś w środowisku produkcyjnym.
Jeremy
-1

Tak myślę / mam nadzieję ... Rozpoczynam projekt od EF 4 i nowego podejścia do Model-First ...

To, co widziałem, EF 4 jest o wiele solidne i kompletne, że pierwsza wersja ... Powiedziałbym, że idź, wiem, że idę :)

sebagomez
źródło
-1

Tak, jednak należy przydzielić zasoby na aktualizację i ponowne przetestowanie aplikacji, gdy pojawią się aktualizacje (jak w każdym innym środowisku).

Kacper
źródło