2009-09-04 5 views
49

Mój zespół rozpoczyna nowy projekt w ASP.NET MVC, a my zastanawialiśmy się, co technologia używać do dostępu do danych. Jak zdecydujesz, który z nich jest najlepszy? Który ma najlepszą wydajność? Który z nich jest łatwiejszy w obsłudze i konserwacji?NHibernate, Entity Framework, aktywne rekordy lub Linq2Sql

+2

Aktywny zapis to raczej wzór niż technologia [http://en.wikipedia.org/wiki/Active_record_pattern], chyba że odnosisz się do czegoś konkretnego, jak Castle ActiveRecord [http://www.castleproject.org/ activerecord/index.html]? –

+0

mam to, cóż, mam na myśli poddźwiękowy aktywny rekord – Omu

+0

dla F #, SQLProvider: https://github.com/fsprojects/SQLProvider –

Odpowiedz

68

Jeśli .NET 4.0, wybierz między NHibernate lub Entity Framework. NHibernate jest bardziej rozszerzalny i generalnie bardziej funkcjonalny. Entity Framework działa lepiej dla firm, które wolą mieć to, co zapewnia Microsoft. Oba są poprawnymi opcjami i nikt nie opublikował jeszcze obiektywnego znaczącego uderzenia przez porównanie ciosów. Jest to jeden z lepszych niż obiektywnych porównań:

http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx

Jeśli .NET 3.5 lub wcześniej, wybierz NHibernate.

Choosing Database and ORM for a .NET project

Which ORM tool should I use for .Net development

Easiest to learn and use .NET ORM framework?

Some suggestions on which .NET ORM to look at learning

Best ORM Tool

https://stackoverflow.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net

https://stackoverflow.com/questions/249550/what-orm-frameworks-for-net-do-you-like-best

Best free ORM tools to use with .NET 2.0/3.5

https://stackoverflow.com/questions/132676/which-orm-for-net-would-you-recommend

Po 04 września 2009 roku:

OR Mapping tool

O/RM Choice (not reliant on linq)

https://stackoverflow.com/questions/1469761/nhibernate-vs-entity-framework-vs-something-better

How to choose an object relational mapping for .net

To powiedziawszy, rzeczy się zmieniają. Teraz, gdy NHibernate obsługuje Linq, myślę, że NHibernate jest oczywistym wyborem w większości sytuacji. Przez dłuższy i dość do analiz data, zachęcamy do zapoznania się następująco:

.NET and ORM - Decisions, decisions

+1

To pytanie uzyskało kilka powyżej średniej odpowiedzi, mimo że jest to dup: http://stackoverflow.com/questions/5101974/comparison-entity -ramka –

+1

Osobiście uwielbiam obie struktury, ale Entity Framework ma jedną wielką przewagę nad NHibernate: znacznie łatwiej jest pracować. Specjalnie dla osób, które dopiero rozpoczynają naukę w NHibernate, faza uruchamiania może być dość trudna. EF robi to o wiele lepiej. Jednak w niektórych obszarach NHibernate jest lepszy, np. jeśli chodzi o rozszerzanie struktury, NHibernate oferuje więcej opcji. –

+0

Spójrz na TinyDA https://github.com/kumait/TinyDA – Kumait

6

Moje preferencje to LLBLGenPro - naprawdę świetny ORM, który działa tak, jak można się spodziewać. Nie opiera się na konfiguracji, takiej jak struktura encji czy nhibernate, generuje DAL na podstawie bazy danych (z dużą elastycznością dzięki narzędziom).

http://www.llblgen.com/defaultgeneric.aspx

2

linq2sql jest probobly najłatwiejsze w użyciu. Entity Framework zapewnia doskonałą rozszerzalność, a przyszłe wydanie będzie zawierało wiele ulepszeń.

Jednym z kluczowych reguła wydajność: wprowadź kod, który jest łatwy w utrzymaniu, czytać i dystrybucji; jeśli ma zwolnić - zoptymalizuj!

myślę, że różnica w wydajności między ORMs jest dziś bareley wyczuwalny, dlatego należy wybrać ten, który czuje się najbardziej komfortowo i skuteczny w pracy.

+0

Nah;) https://github.com/FransBouma/LinqToSQL2 –

2

Entity Framework ma lepsze odwzorowanie relacji niż linq2sql (na przykład, ma wielu wielu relacji).

nie użyłem dwa pozostałe, ale użyłem Hibernate w Javie i to było bardzo proste w użyciu.

+0

Może użyć PLINQO jeśli chcesz obsługiwać wiele do wielu i używać LINQ-2-SQL. http://www.codesmithtools.com/product/frameworks –

1

Ten blog post porównuje różne technologie transmisji danych dla .NET w różnych aspektach (wydajność, łatwość konserwacji, testowalność itp). Może być pomocna w procesie podejmowania decyzji.

+0

Michael, SUbSonic nie jest przyzwoity. Naprawdę nie rozumiem, dlaczego ludzie nawet tego próbują. Tylko jego zespół 300 Kb do np.4 Mb @ OpenAccess - musi być jasne, że to tylko mała zabawka. I zapomnij o LINQ - założę się, że jego obsługa LINQ nigdy nie byłaby porównywalna z innymi. –

+0

Niestety, "SubSonic" i "Just its" => "Porównaj jego";) –

0

Stoję w obliczu tego samego dylematu. LINQ2SQL zapewni większą elastyczność i natychmiastową kontrolę dostępu do danych, , jednak Entity Framework to rozwiązanie "enterprise". Obecnie próbuję tego - SubSonic i wyglądam bardzo obiecująco.

0

Aby porównać ORMS - spojrzeć na http://ormbattle.net/

+6

Ta strona ma już bardzo złą reputację. :( –

+1

Zgoda, musisz sprawdzić, która firma ORM obsługuje tę stronę! – Codezy

+0

Faceci, odwiedź FAQ i Blog @ ORMBattle, wiele wyjaśniają. Michael, ta strona ma złą reputację _for__ - Podejrzewam, ponieważ SubSonic promujesz tutaj pokazuje swoje prawdziwe oblicze: –

1

Mojego wyboru jest Devart LinqConnect (http: // www. devart.com/linqconnect/). Ten produkt jest tak łatwy w użyciu, jak LINQ do SQL (a nawet jest z nim zgodny), a jednocześnie zapewnia zaawansowane funkcje ORM, takie jak Entity Framework. Wolę ich programu Visual Designer i ich funkcje ORM:

  • typów złożonych
  • Lazy Loading
  • PLINQ
0

Używam Entity Framework (kod) i NHibernate pierwszy od jakiegoś czasu , a ja wolę nHibernate, szczególnie płynnie. Wydaje mi się, że mam dużo większą swobodę w mapowaniu moich obiektów do bazy danych. Dodatkowo zapewnia znacznie większą kontrolę nad leniwym ładowaniem i kaskadowaniem akcji na obiektach.