NHibernate vs Entity Framework

0

Zamierzam się nauczyć jakiegoś ORMa i chciałbym się Was poradzić co wybrać. Napiszcie proszę co jest lepsze i dlaczego. A dodatkowo mała ankieta .

0

Osobiście nie używałem nHibernate. W projektach używałem Entity Framework - całkiem fajny, ale nie bez wad.

0

Pisać posty można, ale głosowanie bez minimalnego doświadczenia w korzystaniu z obu technologii, nie ma większego sensu.

NHibernate 2.x miał słabego providera LINQ, który generował koszmarny SQL. W wersji 3.0 jest i normalny LINQ, i QueryOver API, które takich wad nie mają. NH jest bardzo konfigurowalny, wiele rzeczy można wstrzyknąć czy w ogóle zastąpić własnymi implementacjami. EF nie jest tak elastyczny. Jego główną zaletą jest chyba tylko to, że ma designer i nie trzeba niczego instalować, żeby z niego skorzystać. No i może lepsza dokumentacja, bo M$ o to dba lepiej niż społeczność NH.

Myślę, że w małych projektach DB first, EF jest lepszym wyborem. Z kolei w projektach OOP, lepiej użyć NH. ;)

0

Minusy:

  • w niektórych przypadkach dla prostych zapytań generowany jest koszmarny SQL
  • batchowe inserty praktycznie nie istnieją - trzeba napisać własny mechanizm np. korzystający z ADO

Plus:

  • EF CodeFirs + FluentApi daje duże możliwości konfiguracyjne
  • Migracje - całkiem fajny mechanizm
  • w wersji 5 dodano obsługę enumów - co prawda zapisują się wartości int a nie string - może później ekipa EF doda możliwość wyboru czy chcemy wartość numeryczną czy tekstową
0
ozi88 napisał(a):
  • EF CodeFirs + FluentApi daje duże możliwości konfiguracyjne

W porównaniu z Fluent NHibernate? ;)

  • w wersji 5 dodano obsługę enumów

Dopiero w wersji 5. ;P

Ciekawy wpis w temacie: http://weblogs.asp.net/ricardoperes/archive/2012/06/07/differences-between-nhibernate-and-entity-framework.aspx

1

http://ormeter.net/

polecam to przeczytac, albo chociaz rzucic okiem na wykresy - dla tych co uwazaja ze nHibernate jest taki zajebisty ;]

0

Wynika z tego ze nHibernate jest jednym z najgorszych, EF jest w środku stawki a najlepsze jest BLToolkit

0

polecam to przeczytac, albo chociaz rzucic okiem na wykresy - dla tych co uwazaja ze nHibernate jest taki zajebisty ;]

Polecam rzucić okiem czym właściwie są te wygrywające frameworki, bo obok ORMów to one nie stały. BLToolkit nawet się nie reklamuje jako taki.

0

Ale DataObjects.NET jest orm-em, szkoda że płatny. I EF wypada jednak lepiej niż nHibernate. A ciekawy jestm jak javowy Hibernate wypadnie w porównaniu z nHibernate i EF, ale pewnie ciężko by było to bezpośrednio porównać.

0

Co to znaczy "LINQ Implementation Scorecard" i jaki to ma związek z tym tematem?
Czego to jest właściwie test? Różnych implementacji LIINQ? A która wersja NHibernate została tam przetestowana?
Jeśli 2.x, to odkrycie, że LINQ dla tej wersji NH jest cienki, nie jest niczym niezwykłym.
I jakie to ma znaczenie, skoro w NH się z LINQ nie korzysta?

1

Na ormeter.net jest napis "Last Updated on Friday, 30 July 2010 08:20", a wiki podaje, że "NHibernate 3.0 was released on December 4, 2010 and is the first version to use .NET 3.5, with features such as: Introduces integrated LINQ support". Czyli wychodzi na to, że testowali LINQ w nHibernate, zanim w nHibernate było wsparcie dla LINQ. Dziwne.

0
Wibowit napisał(a):

Na ormeter.net jest napis "Last Updated on Friday, 30 July 2010 08:20", a wiki podaje, że "NHibernate 3.0 was released on December 4, 2010 and is the first version to use .NET 3.5, with features such as: Introduces integrated LINQ support". Czyli wychodzi na to, że testowali LINQ w nHibernate, zanim w nHibernate było wsparcie dla LINQ. Dziwne.

Bo Wikipedia to nie jest źródło informacji. ;P
Albo chodzi o akcent na "integrated", bo sam LINQ to NHibernate istniał wcześniej: http://ayende.com/blog/4083/nhibernate-linq-1-0-released
Tylko był strasznie słaby i generował koszmarny SQL. Jeśli to ta wersja została przetestowana, to nie ma w tym nic odkrywczego.

Nie ma to jak wysnuwać wnioski o ORM na podstawie przeprowadzonego ponad dwa lata temu testu nieużywanego nigdzie rozszerzenia do starej wersji biblioteki. [rotfl]

1 użytkowników online, w tym zalogowanych: 0, gości: 1