Ms Entity Framework VS NHibernate i jego pochodnych (FluentNHibernate, Linq dla NHibernate)

Właśnie przeczytałem to Artykuł o Entity Framework 4 (właściwie Wersja 2).

Entity Framework wydaje się oferować ogromną poprawę w stosunku do pierwszego wydania. Tak więc nigdy nie używałem EF w żadnym projekcie, ponieważ uważam, że EF nie jest wystarczająco dojrzały w porównaniu do NHibernate.

NHibernate i jego obecny wkład FluentNHibernate i Linq dla NHibernate by Ayende Rahien

Moje odczucie jest takie Microsoft próbuje tylko zdobyć teren stracił na rzecz NHibernate, gdy 2 Wersja NHibernate wyszedł. Niemniej jednak moje obawy są następujące (Nie w konkretnej kolejności):

  • czy EF4 będzie mniej XML-verbose?
  • czy EF4 będzie kompatybilny z bazami danych innymi niż tylko SQL Server?
  • jakie są największe korzyści płynące z zastosowania EF4 zamiast samego FluentNHibernate lub NHibernate?

NHibernate to świetne narzędzie, Chyba wszyscy się zgadzają. Ze względu na jego poprzednika Hibernate, możemy łatwo znaleźć dokumenty i tutoriale oraz przykładowe aplikacje do zapoznania się z nim. Tak nie jest w przypadku FluentNHibernate. Szczególnie w ramach projektu, nad którym obecnie pracuję, który wymaga dalszego zbadania NHibernate i jego opcji (na przykład FluentNHibernate) w celu udokumentowania zasad użytkowania i najlepszych praktyk technologii NHibernate i FluentNHibernate. W ten sposób kajdanki z VB.NET, będąc programistą w stylu C, nie mogę znaleźć jakichś równoważności składni w VB.NET na podane przykłady, choć do tej pory udało mi się

Wierzę, że NHibernate jest najlepszym wyborem, ale jako konsultant oprogramowania nie mogę (nie chcę) przegapić ważnych zmian technologicznych, ulepszeń i ewolucji.

Pomimo złych komentarzy, które czytałem o EF1, EF4 wydaje się być bardzo obiecujący. Co myślicie o NHibernate i Entity Framework? Co do mnie, Jestem zaczynam się zastanawiać nad tymi wszystkimi odczytami. Musisz przywrócić mi głowę z wody.

Dzięki wam wszystkim!

Author: Firo, 2010-02-04

3 answers

Weź to z przymrużeniem oka. Nie jestem żadnym autorytetem w sprawie narzędzi ORM, ale zaczyna się...

Jedną z największych zalet jakie widzę w EF jest GUI do mapowania. IMO, oszczędza to dużo czasu, ale prawdopodobnie jest to powód, dla którego mapowania EF XML są tak gadatliwe. Niestety nie są do ręcznego załatwienia. Czy to się zmieni, czy Nie, Nie wiem. Wiem tylko, że GUI, które dostarcza EF, w poprzednich wydaniach było bardzo flaky. I wciąż słyszę o ludzie narzekają, że nie jest skalowanie dobrze, zwłaszcza na większych i bardziej złożonych schematów, gdzie po prostu brakuje rzeczy i kończy się bałagan z mapowania bezpośrednio. Moim zdaniem mapy XML staną się mniej gadatliwe w miarę dojrzewania EF. Masz również obsługę płynnego mapowania w EF, co jest również pomocne. Wreszcie, kolejną dużą rzeczą jest możliwość zmiany szablonów kodu generowanych przez EF, to znaczy, jeśli wolisz projektowanie oparte na bazie danych zamiast podejścia do projektowania.

Inny zaletą jest to, że pochodzi od Microsoftu i mają wystarczająco dużo kasy, aby to naprawdę świetny framework. W ciągu ostatnich kilku lat bardzo się rozwinęła. Myślę, że będzie na tym samym gruncie z NHibernate za nieco ponad rok. Na razie myślę, że NHibernate jest lepszym wyborem. Jest bardziej stabilny i dojrzały. Stosunkowo łatwy w konfiguracji i co najważniejsze lepszy wykonawca. Myślę, że jeśli zaprojektujesz mądrze, przejście od jednego do drugiego będzie bułką z masłem.

EF jest tylko abstrakcja. Uważam, że istnieją dostawcy Oracle, więc nie rozumiem, dlaczego nie można było więcej dodawać, gdy rośnie.

 3
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 16:53:41

Prawie nic nie wiem o EF, ale szybki przegląd podanych linków prowadzi mnie do przekonania, że EF nie ma odpowiednika do płynnej funkcji automatycznego mapowania NHibernate.

Edit: niektórzy komentatorzy wskazali mi linki wskazujące na to, że istnieje jakieś automatyczne mapowanie w EF, ale nie jest do końca jasne, czy jest tak potężne jak FNH (na przykład możliwość automatycznego mapowania kolekcji innych obiektów).

Osobiście uwielbiam być w stanie zaprojektować POCOs w OO sposób i pozwalając narzędziu obsługiwać całą pracowitą pracę mapowania do relacyjnej bazy danych.

FNH nadal ma najpotężniejsze możliwości automatycznego mapowania, o ile wiem.

Przejdź do Fluent NHibernate Automapping aby uzyskać więcej informacji.

 5
Author: Tom Bushell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-08 20:46:32

Czy EF4 będzie mniej XML-verbose?

Ogólnie rzecz biorąc, nie widziałem żadnych oznak, że XML będzie drastycznie inny. Microsoft zapewnia płynny interfejs do EF w v4, ale jest to dodatek do / oddzielnego pobrania.

Czy EF4 będzie kompatybilny z innym bazowym magazynem danych niż tylko SQL Server?

Jest teraz kompatybilny i pozostanie kompatybilny w przyszłości. LinqToSql to tylko SQL Server, ale EF nigdy nie był SQL Tylko serwer.

Jakie są największe korzyści płynące z zastosowania EF4 zamiast samego FluentNHibernate lub NHibernate?

Szczerze mówiąc, nie ma ich wielu. Tu i ówdzie są różne rzeczy, ale ogólnie NHibernate jest jeszcze o lata przed EntityFramework, nawet w EFv4.

Jako konsultant prawdopodobnie warto poświęcić swój czas, aby stać się ekspertem zarówno w NHibernate, jak i Entity Framework. Prawdopodobnie nadal będziesz je widzieć w prawdziwym świat. Microsoft ma tendencję do krótkiego zakresu uwagi, jeśli chodzi o dostęp do danych, więc nie jest jasne, gdzie Entity Framework będzie za kilka lat. Ponieważ jest od Microsoftu, możesz być pewien, że wielu programistów będzie używać EF.

 4
Author: Michael Maddox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-04 17:29:37