2013-09-27 19 views
5

TL; DR czy istnieje jakieś narzędzie do zarządzania migracjami (auto-tworzenie, wykonywanie) (przy użyciu natywnego języka .NET) dla NHibernate?Narzędzie do zarządzania migracją NHibernate, takie jak EntityFramework, Django-South

Pochodzę z tła Django, które zachęca do opracowania Code-First. Istnieje również de facto "standardowa biblioteka" dla migracji, zwana południem. Typowy obieg zmiany schemat jest następujący:

  1. zmiana kodu modelu (czyli dodawanie/usuwanie/modyfikowanie klas i/lub właściwości) [oczywiście kod model jest w natywnej aplikacji języka - tutaj: python]
  2. uruchom komendę schemamigration, która automatycznie generuje kod migracji [kod migracji to python] i zapisuje go w podkatalogu "migracje".
  3. w razie potrzeby dostosuj automatycznie wygenerowany kod. generator automatyczny jest całkiem sprytny, ale nie na tyle sprytny, by posłużyć się np. zmianą nazw kolumn. Komenda Migrate
  4. prowadzony, który patrzy się katalog „migracje” i wykonuje wszystkie migracje, które nie zostały jeszcze zrealizowane (ta jest obliczana z wykorzystaniem tabeli historii migracji)

Jest to bardzo wygodne nie tylko dla rozwoju (nawet SCRUM, gdzie rzeczy zmieniają się tak szybko), ale także do aktualizacji produkcji - po prostu pamiętaj, aby migracje na serwerach i serwerach produkcyjnych były osobne. Jest także całkiem bezpieczny do produkcji, ponieważ można przejrzeć i opcjonalnie zmodyfikować migrację przed jej zastosowaniem.

Podczas oceny ORMów dla .NET, wypróbowałem Entity Framework 5, który - jak się dowiedziałem - ma bardzo podobną funkcjonalność do tej z Django-South. Istnieje polecenie konsoli menedżera pakietów do tworzenia kodu migracji, który można zmodyfikować przed uruchomieniem. Istnieje osobne polecenie, które wykonuje wszystkie nie wykonane migracje i oznacza je jako wykonane w historii migracji.

Czy istnieje narzędzie do NHibernate?

Jestem świadomy funkcji SchemaUpdate, ale AFAIK to po prostu aktualizuje wszystkie rzeczy, które należy zaktualizować w jednym kroku. Nie użyłbym tego w produkcji, ani w trakcie rozwoju, w którym utrata danych nie jest katastrofą, ale nadal sprawia ból. Jestem również świadomy, że narzędzie SchemaUpdate może być używane do eksportowania instrukcji SQL do pliku zamiast ich wykonywania, ale nie jest to wygodne, ponieważ nie ma automatycznego zarządzania migracjami historii. Dodatkowo, trzeba pisać ręcznie SQL;)

Odpowiedz

3

Nie wiem, czy to naprawdę odpowiada na twoje pytanie, ale aby zautomatyzować zmiany schematu i zaktualizować mapowania, a nawet zaprojektować swoje mapowania, dobrze jest użyć narzędzi do tego . Zwłaszcza jeśli masz bardzo duży model bazy danych/domeny.

Aktualnie pracuję z entity developer from devart.

Porównaliśmy wiele podobnych narzędzi, które są dostępne, ale ten naprawdę się kręci. Ma tylko tyle funkcji, a ponadto oferuje funkcję dodawania niestandardowych szablonów T4, aby wygenerować wszystko, co chcesz z modeli, a nawet dodać niestandardowe atrybuty do projektanta modelu, który następnie może być użyty w części generatora kodu ...

Możesz również zmienić nazwy swoich obiektów/właściwości na coś bardziej czytelnego ręcznie, a narzędzie zachowa to nawet po aktualizacji ze schematu bazy danych ...

I oczywiście obsługuje zarówno bazy danych, modelu lub pierwsze podejście ...

Można pobrać wersję testową przyczyny, aby dowiedzieć się, czy to własnych potrzeb ...

0

Narzędzie jak LLBLGen może pomóc tutaj .. LLBLGen Pro to rozwiązanie dostępu do danych. Używasz LLBLGen Pro Designer do tworzenia modelu encji/domeny, definiowania odwzorowań i generowania kodu źródłowego dla jednego z czterech obsługiwanych frameworków mapowania O/R: Entity Framework, LLBLGen Pro Runtime Framework, NHibernate i Linq do SQL.

Powiązane problemy