2009-03-25 13 views
6

Właśnie rozpocząłeś naukę NHiberate. Wydaje się dość żmudne pisanie odpowiednich plików konfiguracyjnych hbm.xml dla każdej tabeli bazy danych.Używanie NHibernate z Codesm do generowania ORM

Pytanie może NHibernate czytać w tabelach i automatycznie pobrać dla ciebie relacje i potrzebny plik konfiguracyjny, jak również klasy mapowania baz danych? Wygląda na to, że programista musi na początku wykonać wiele pracy naziemnej. Potem natknąłem się na Codesmith, który ma szablony dla NHiberate? Czy wypełnia lukę?

Odpowiedz

4

Możesz użyć szablonów kodu, ale to nadal powoduje ból IMHO. Najlepszym sposobem jest użycie Fluent nHibernate. Mają nową funkcję automatycznego mapowania, która używa konfiguracji według konwencji. Brak plików odwzorowań, po prostu przyjmuje założenia, że ​​używasz podobnych nazw i możesz zdefiniować reguły konwersji nazwy jednostki na nazwę tabeli.

1

Generowanie kodu może bardzo dobrze wypełnić tę lukę, zacząłem używać CodeSmith, ale potem stworzyłem ten element płatności, więc przeniosłem się do MyGeneration. Moim podejściem jest zaatakowanie DB, kodu genów plików mapowania i klas genów, jeśli jeszcze nie istnieją. To sprawia, że ​​coś dzieje się naprawdę szybko, świetnie dla prototypu i tworzenia danych testowych.

Pliki odwzorowań, klasy i DB są często następnie zmieniane ręcznie. W niektórych przypadkach próbowałem sprawić, by generowanie kodu działało jako część CI - ale udowodniono, że trudno to zrobić, chyba że jesteś zdyscyplinowany tym, gdzie podzielisz się ręcznymi zmianami kodu. Częściowe zajęcia stanowiły pomoc, ale wciąż jest to problem, aby cały zespół był na tej samej stronie, nikt nie lubi, aby jego kod został zastąpiony przez narzędzie, nawet jeśli można wtedy wycofać i scalić.

+0

ostatni projekt byłem na tej stosowanej kodu gen'ed wyłączony gen kodu w połowie, kiedy nie mogliśmy utrzymać aktualizacją generator dość szybko .... – JoshBerke

+0

W twoje zdanie, oprócz bycia wolnym, to MyGeneration, lepszy gen-gen? – devXen

+0

Nie mam wystarczającego doświadczenia z CodeSmith lub innymi, uważam to za ekscentryczne, ale dobre. To jest teraz open source, a szablony są napisane w języku C# - wszystkie te są plusy. – MrTelly

1

Pracuję dla CodeSmith ... Proszę pamiętać, że MyGeneration nie była aktualizowana na zawsze, co oznacza, że ​​również nie ma wsparcia. CodeSmith w pełni obsługuje swoje produkty i szablony. Oznacza to, że wszelkie błędy w szablonach zostaną również naprawione i zweryfikowane przez Codesmith.

Dzięki

-Blake Niemyjski

+0

Chociaż zgadzam się, że MyGeneration nie był aktualizowany od wieków, w celu pełnego ujawnienia warto zauważyć, że jesteś aktywnym programistą w CodeSmith. – furtive

+0

Tak, to prawda. Zaktualizowałem większość moich wpisów, aby to zaznaczyć. –

Powiązane problemy