2009-02-19 12 views
8

Moja firma chce użyć ORM do nowego rozwoju w .Net. Obecnie patrzymy na nHibernate, ze względu na jego popularność, jednak LLBLGen jest inną opcją, którą możemy rozważyć. Koszt nie jest głównym czynnikiem. Potrzebujemy rozwiązania, które zapewnia dobrą separację modelu domeny od bazy danych, dobrą strategię buforowania, wydajność rozwoju (tj. Jeśli mogę edytować ją w GUI zamiast w plikach konfiguracyjnych, świetnie), dobrą obsługę klienta.Które narzędzie ORM należy użyć do rozwoju sieci .Net?

Wiem, że nHibernate jest bardzo popularny, ale wiem również, że cena (to nic nie kosztuje) może być częścią tego powodu dla typów open source. Ponieważ koszt nie jest podstawowym czynnikiem (chyba że cena wynosi> 10 000 USD), który byś wybrał biorąc pod uwagę nasze okoliczności? Poza tym, jakie inne czynniki, poza wymienionymi przeze mnie, uważasz za najważniejsze przy wyborze ORM?

Rozdzielczość

W końcu decyduje NHibernate jako rozwiązanie, jednak z perspektywy czasu, myślę, że bym poszedł z LL gdybyśmy mieli to zrobić jeszcze raz. Po prostu nie znaleziono plików mapujących xml. Generatory kodu, które znalazłem dla NHibernate pozostawiły wiele do życzenia. Uważam Fluent NHibernate za interesujący projekt, ale wolę poczekać, aż dojrzeje przed użyciem.

Okazało się, że najważniejszą częścią mojego procesu uczenia się okazały się nie technologie, ale dwa wzorce projektowe: repozytorium i oddzielne wzorce interfejsu. Definiując interfejs repozytorium dostępu do danych (Jeffrey Palermo ma wiele postów na blogu i zarówno w książkach Apress, jak i Wrox MVC to pokazują), możemy użyć LinqtoSQL, LLBLGen, NHibernate itp. I zamienić implementację DAL później, jeśli się przełączy. Podczas gdy jeden z moich współpracowników używa aplikacji NHibernate w swojej aplikacji, wybrałem opcję korzystania z LinqToSQL na mojej najnowszej aplikacji i działało dobrze.

Odpowiedz

8

Jeśli nie masz nic przeciwko płaceniu, proponuję LLBLGen.

Pełna lista funkcji here.

Z witryny:

Prawdziwa baza niezależny kod

Pełna typu jednostka dziedziczenia wsparcia

LINQ

wpisane list i wpisane widoki

Procedury składowane wspierać

Elastyczny mechanizm współbieżności

drobnoziarnista struktura walidacja

Pochodzące wsparcie stół

+0

Ric - używamy obecnie LLBLGEN. Próbujemy wprowadzić więcej testów jednostkowych do naszej nowej aplikacji i napotykamy na pewne trudności bez uderzania w bazę danych (używamy modelu adaptera). W jaki sposób podchodzisz do testów jednostkowych LLBL? –

+0

Hi @LuckyLindy Proponuję http://ayende.com/projects/rhino-mocks.aspx i tworzę fałszywe obiekty zamiast używać bazy danych bezpośrednio, myślę, że to może być pełne pytanie SO prawie ponieważ możesz poprosić o coś zasługującego na lepsza odpowiedź niż moja :) –

2

To zależy trochę od tego, co chcesz:

  • Chcesz tworzyć własne klasy domeny, które Cię nie muszą dziedziczyć po klasie ORM zdefiniowanej klasy bazowej lub interfejsu, wówczas preferowanym rozwiązaniem jest NHibernate.

  • Czy chcesz automatycznie generować klasy encji na podstawie modelu bazy danych, to powinieneś wybrać LLBLGen.

+0

Baza danych będzie sterować domeną. Zasadniczo działamy w branży hurtowni danych, a podstawą naszej działalności jest ładowanie danych, porównywanie danych w oparciu o niestandardowe reguły ustanowione przez naszych klientów, a następnie dostarczanie raportów naszym klientom. Z Twojej odpowiedzi wynika, że ​​LLBLGen Pro będzie działał najlepiej. – John

1

Bardzo często używamy nHibernate. jak na razie dobrze.

3

Używam LlblGenPro od 2003. Jest to świetny produkt , w przystępnej cenie, cudowne wsparcie za pośrednictwem strony z projektowaniem rozwiązań. Frans (główny programista) często wydaje łaty i nowe pełne instalacje, aby klienci, u których występują problemy, mogli szybko skorzystać z poprawek.

Obecna wersja obsługuje Linq wraz z tradycyjną infrastrukturą dostępową. Wersja 3 jest w fazie rozwoju, ale prawdopodobnie nie zostanie wydana przed rokiem 2010.

LlbGen rozpoczyna czytanie bieżących schematów baz danych, co może zaoszczędzić czas na opracowanie db do mapowania obiektów w porównaniu do nHibernate.

Jest kilka rzeczy, które chciałbym poprawić dzięki LlblGen, ale jestem bardzo szczęśliwym użytkownikiem od długiego czasu i ich wsparcia nie da się pokonać.

+0

miło pomocny komentarz m4bwav - staram się wyjaśnić dlaczego? – redsquare

2

Kolejny głos na LLBLGENA, nie mógł bez niego żyć!

0

SignumFramework ma full LINQ Provider i jest oparty na podejściu opartym na entityksie. Druga strona jest taka, że ​​jest w porządku tylko dla nowych rozwiązań (nie dla istniejących baz danych).

0

Jeśli zaczniesz od zera, możesz użyć NHiberbate, który ma również solidne tło. Ale używamy LLBLGen Pro w więcej niż jednym projekcie i jest bardzo solidny i ortogonalny. Ma również bardzo dobrą dokumentację. NHibernate ma dużą społeczność (jeśli dodamy też Hibernate), ale LLBLGen jest bardzo dojrzałym produktem, bardzo pomocnym forum i bardzo dobrą dokumentacją.

Do czego służy RDMS? Używamy LLBLGen Pro z Oracle i całkowicie oddziela operacje specyficzne dla bazy danych i ogólne bez problemów. Uniknął on idealnie Inner Platform Effect. (Pomyśl na przykład o sekwencjach Oracle i polach tożsamości SQL Server. To nie jest problem z LLBLGen Pro.)

LLBLGen Pro jest bardzo rozbudowanym generatorem kodu. Mapuje obiekty w bazie danych do warstwy dostępu do bazy danych jako projekt (projekty), które można łatwo dodać do rozwiązania. Ma to bardzo dobrą zaletę, której nie można od razu zauważyć: Jeśli procedura składowana lub nawet zmienione/usunięte, zauważysz błąd w czasie kompilacji, a nie w czasie wykonywania. Jeśli masz już działającą bazę danych, przejdź do LLBLGen Pro.

Możesz również dodać komponenty źródła danych do programu Visual Studio, jeśli jesteś facetem typu "przeciągnij i upuść" i łatwo powiązaj dane. Niektóre osoby uznają to za przydatne w projektach ASP.NET.

Jeszcze jedna ważna sprawa: Listy wpisane: są bardzo przydatne do tworzenia źródeł danych bez zmiany kodu w bazie danych. Tak więc, jeśli masz jakieś siatki wyświetlające dane, możesz dostarczyć dane bez dotykania bazy danych, która staje się bardzo bezpieczna w krytycznych środowiskach.

Proponuję więc LLBLGen Pro, mimo że N/Hibernate ma więcej użytkowników.

4

Zapoznaj się z DataObjects.Net (GPL + reklama komercyjna).

+0

Należy również zapoznać się z wieloma dyskusjami podkreślającymi, w jaki sposób powyższe zamieszczone łącze prowadzi się samodzielnie. Blogi są twoim przyjacielem. – nathanchere

Powiązane problemy