2009-02-17 9 views
11

Uwaga: Każdy, kto podejmie teraz to pytanie, pamięta datę. To pytanie ma prawie 4 lata, a informacje są stosunkowo nieaktualne. Z mojego doświadczenia wynika, że ​​NHibernate jest teraz stosunkowo łatwy w użyciu (z płynnym interfejsem), Entity Framework jest uzasadnionym rywalem, a MicroORMS takie jak Dapper i Massive stają się dość popularne.Najłatwiejszy do nauczenia się i korzystania z platformy .NET ORM?


Jesteśmy ponownego pisania jedną z naszych podstawowych aplikacji internetowych, a ja w końcu wszystko jasne od zarządzania zastąpić straszny plątaninę procedur składowanych z ram ORM dla realizacji naszej warstwy dostępu do danych.

Brawo dla mnie. Teraz muszę wybrać jeden.

Grałem około trochę z następujących

Teraz wiem, że NHibernate jest prawdziwym wyborem Alt.Netty, ale problem polega na tym, że pracuję z kontrahentami, którzy, o ile mi wiadomo, nigdy o tym nie słyszeli, NHibernate ma reputację dość krzywej uczenia się. Poddźwięk w międzyczasie wydaje się być znacznie prostszym podejściem. Jestem również świadomy Entities Framework, ale nie podoba mi się jego "meh" recepcji i Linq to Oracle, ale nie podoba mi się fakt, że prawie nic nie słyszałem o tym.

więc pytania są:

  1. Są jeszcze jakieś ramy I powinny być rozważa?
  2. Co polecasz w mojej sytuacji?

Niektóre dalsze rozważania:

  • Kiedy mówię, mam bawił się trochę z tymi ramami, mam na myśli. Skonfigurowałem je i wykorzystałem do pobrania pewnych danych, aby upewnić się, że wszystko działa. To jest jego zasięg.
  • To jest baza danych Oracle (jak można się domyślić z włączenia Linq2Oracle)
  • Ponieważ jest to re-write, już istnieje w bazie danych i posiada stabilną schematu
  • Nie jestem zbyt zaniepokojeni wydajności . Nasza aplikacja zwykle obsługuje najwyżej kilka osób naraz.
  • Jesteście tymi, którzy będą musieli odpowiedzieć na potok pytań będę musiał

jestem pochylony w kierunku Subsonic, ale jestem ciekaw co ludzie mogą mieć do powiedzenia.

+0

spróbuj tego: http://valueinjecter.codeplex.com/wikipage?title=Data% 20access% 20layer% 20% 28ORM% 29% 20z% 20% 20 20% 20Injecter & referringTitle = Home – Omu

+0

@Omu - ciekawe małe narzędzie, ale w żaden sposób nie jest to ORM –

+0

to nie jest ORM, ale jest znacznie lepiej, jeśli potrzebujesz pełnej kontroli nad swoim sql – Omu

Odpowiedz

6

Czy wymeldowałeś się Telerik's OpenAccess ORM? Niedawno przejęli Vanatec i jego produkt ORM.Obsługuje wiele platform bazodanowych (w tym Oracle), obsługę LINQ, mapowanie odwrotne &, jest zintegrowane z Visual Studio, i moim zdaniem (przyznane jestem nieco stronniczy) jest odpowiednim zamiennikiem LINQ na SQL, jeśli jest to rodzaj " łatwość użytkowania "czego szukasz.

+0

Sprawdzę to, dziękuję –

+0

Telerik ma świetne wsparcie, więc powinno to pomóc, jeśli pracujesz z rozproszonym zespołem. – Todd

+0

Obejmuje Oracle, ale jest przeznaczony tylko do edycji ekspresowej. Nie obejmuje innych wersji wyroczni, chyba że za to zapłacisz. Tylko FYI – mcauthorn

3

CoolStorage.NET to moja rekomendacja. Jeśli utknąłeś w działaniu .NET, jest to najprostsze pełne rozwiązanie.

+0

Nigdy o nim nie słyszałem, ale przyjrzymy się. Jaka jest społeczność wsparcia? –

+0

Nie obsługuje Oracle! –

+1

Ponieważ jest to open source, założę się, że przeniesienie natywnego sqlclient bingingu na ekwiwalent oracle nie byłoby tak trudne. Jeśli chodzi o społeczność, to uważam, że jest dość aktywna. –

4

NHibernate pozwoli oddzielić twoje domeny od warstwy danych. Czyni to za pomocą plików mapujących XML w celu opisania relacji i używa Castle DynamicProxy do magicznych właściwości, które leniwie ładują.

NHibernate ma kilka generacji przewagi nad innymi pod względem wydajności, elastyczności i konfiguracji. Jak jednak powiedziałeś, jest to skomplikowane. SubSonic jest bardzo prosty, ale generuje w zasadzie statyczne klasy proxy oparte na bazie danych, więc RM nie będzie z ORM. IMO SubSonic, L2S i Castle ActiveRecord to wszystkie generatory DAL, a nie ORM.

IMO wszystko zależy od Twoich potrzeb. Jeśli mówisz 2-tier, idź do jednego z generatorów DAL. Pozwoli ci to na szybsze poruszanie się, a Twój model prawdopodobnie nie jest tak skomplikowany, że nie możesz go po prostu wygenerować ze swojego schematu db. Jeśli masz n-tier, bardzo polecam NHibernate. Oczywiście, krzywa uczenia się jest wyższa (nie jest nauką o rakietach, ale nie jest też przyciskiem), ale może obsłużyć pracę, której potrzebujesz, a jeśli użyjesz jednego z innych, skończysz robić dużo rzeczy ręcznie w każdym razie.

+0

Myślę, że w przypadku poddźwięku chciałbym, aby każdy z moich repozytoriów wywoływał zapytania Subsonic i mapował je do moich encji domeny. W przypadku activerecord i L2O będę używał klas jako DTO i mapuję również w moim repozytorium. –

+0

To jest wyższa konserwacja, wiem, ale premia dla mnie jest na prostocie. –

+1

Pytanie, gdzie chcesz uzyskać prostotę. Widzę setki linii po lewej stronie = odwzorowanie prawostronnych obiektów bardziej skomplikowane i trudniejsze do utrzymania niż sql, szczególnie jeśli masz obiekty w swoim modelu domeny, które pobierają z wielu tabel. –

1

No problem przy rozważaniu ORM jest

  • znalezienie dobrej informacji o nim. Przykłady, materiały do ​​nauki.
  • czy wystarczająca liczba osób go używa (czy produkt jest dojrzały)? im więcej firm go używa, tym większe prawdopodobieństwo wykrycia błędów.

Kiedy patrzę na rynku ORM dla .NET Mam znalezieniem więcej i więcej materiału na NHibernate

Links to helpful material about Nhibernate < - Filmy, narzędzia i najlepsze praktyki

Zamek jest zbudowany ontop NHibernate (Korzysta z modelu Active Record)

Mieć Google, aby sprawdzić, czy ORM; s mają narzędzia, które pomogą Ci szybciej się rozwijać.

  • Telerick mówi, że pochodzi z VS intergration
  • Nhibernate ma kilka narzędzi do inżynierii wstecznej DB na klasy, również tam jest NHProf (nie za darmo), który monitoruje SQL między NH i SQL

jeśli nie jesteś w plikach mapujących XML, sprawdź, czy możesz znaleźć mapowania Fleunt. Co powinno oznaczać kompilacji sprawdzanie (niektórzy ludzie uważają, że jest to łatwiejsze do debugowania/kodu byłaby)

fluent nhibernate

HTH

Bones

+0

Jestem w pełni świadomy cudownego pisania na NHibernate, który stał się dostępny od czasu, gdy ostatnio próbowałam się go nauczyć w sierpniu, ale czy to naprawdę dostępne? Czy kontrahenci naprawdę będą brnąć przez 50 stron samouczka, aby zrozumieć tę koncepcję, aby mogli ją zastosować? Nie wiem ... –

+0

Masz rację, podręcznik jest duży, jednak istnieje wiele przykładowych projektów, które szybko pokazują koncepcję.spójrz na Sharp Archecture, na codeproject. również proszę nie zgryźć się w dokumentacji, ja również odnoszą się do narzędzi i sposobów mapowania (XML/kod) to również wielkie czynniki. – dbones

2

Chciałbym zrewidować swoją ocenę Entity Framework Microsoft.Możesz korzystać z dostawcy DotConnect firmy DevArt dla Oracle jako rozwiązania, dopóki Oracle nie wyda własnego dostawcy w przyszłości. Korzystając z Entity Framework, nie używałbyś wtedy "Linq do Oracle", ale raczej "Linq to Entities", co jest znacznie lepszym rozwiązaniem.

Miałem BARDZO dobre wyniki z mojego testowania operacji odczytu przy użyciu Entity Framework, gdzie operacje odczytu były ~ 700% szybsze niż jego SqlCommand \ SqlDataReader equivilent.

+0

Tak jak powiedziałem, wydajność nie jest problemem, ale niektóre z krytyki ze strony społeczności Alt.Net. –

+0

Oczywiście, a ich obawy były aktualne i zostaną omówione w dalszej części .NET 4.0. Oczekuję. Ich obawy dotyczyły głównie użycia Entity Framework z istniejącymi klasami, ponieważ EF wymaga klasy bazowej dla każdej tworzonej przez siebie encji. Niektórzy ludzie tego nie lubili. – Rick

3

Zamówienie XmlDataMapper proste darmowe oprogramowanie ORM (licencja LGPL), które pozostawia niewielki ślad pamięci w porównaniu do innych gigantów. Podany przykładowy projekt powinien wystarczyć do rozpoczęcia pracy.

Aby zintegrować XmlDataMapper wszystko, co trzeba zrobić, to 4 małe kroki

  1. stworzyć firmę Entity/dto dla tabel
  2. utworzyć plik XML z informacjami mapowania między stołem a DTO.
  3. Określ plik DTO i xml w konfiguracji.
  4. Wystarczy zadzwonić pod DTOConverter.Convert (DataReader) i innych takich metod do konwersji rekord bazy danych do DTO/Biznes Jednostki
Powiązane problemy