2010-01-14 8 views
13

Dla uproszczenia. Korzystam z Automatyzacji Fluent NHibernate w połączeniu z SchemaUpdate NHibernate podczas pracy. Przy każdym uruchomieniu Automapper tworzy odwzorowania dla wszystkich klas encji, a SchemaUpdate stosuje schemat do istniejącej bazy danych. Byłem mile zaskoczony, że działa poprawnie również w przypadku pustej bazy danych. Do tej pory działało dobrze w środowisku programistycznym i pozwoliło mi dość szybko reagować na błędy.Czy NHibernate SchemaUpdate jest bezpieczne w kodzie produkcyjnym?

Moje pytanie brzmi, czy jest wystarczająco niezawodny, aby pozostawić kod produkcyjny. Oczywiście nie trzeba go uruchamiać za każdym razem, gdy program jest uruchamiany w środowisku produkcyjnym, ale byłby przydatny przy stopniowych aktualizacjach produktów (chociaż nie planuję wprowadzania większych zmian w domenie po dostarczeniu produktu).

(Być może moje prawdziwe pytanie powinno być jak bezpieczne jest stosowanie tych dwóch narzędzi w połączeniu?)

Aktualizacja

Aplikacja posiada dwie wersje: samodzielny pulpit i wielu użytkowników klient/serwer . Również ze względu na charakter domeny biznesowej (oprogramowanie podatkowe) mam lukę w rozpoczęciu od czystej bazy danych każdego roku.

+0

Kudos zarówno dla CatZ, jak i Grega Beecha za podniesienie kwestii bezpieczeństwa. Nie brałem tego pod uwagę. Większość czasu spędziłem na samodzielnej wersji komputerowej, w której bezpieczeństwo nie jest tak ważne. –

Odpowiedz

12

Aby można było uruchomić kod produkcyjny, konto używane przez aplikację produkcyjną do łączenia się z bazą danych musiałoby mieć uprawnienia do zmiany schematu bazy danych.

To samo powinno odstręczać Cię od takiego podejścia, niezależnie od jakości/niezawodności kodu NHibernate.

2

To zależy od tego, jak ważne są dane! Wątpię, czy to dobry pomysł na system bankowy. Nie miałem żadnych problemów z aktualizacją oprócz jednej rzeczy. Czasami nie zmienia się poprawnie. Ponadto istnieje większe ryzyko związane z połączeniem z kontem, które może zmodyfikować taki schemat :)

7

Można rozważyć, że SchemaUpdate zawsze będzie wprowadzać addytywne i nieniszczące zmiany, czego wynikiem będą nieaktualne kolumny i kolumny z wartościami zerowymi, w których powinny być nie-nullable.

Innymi słowy, absolutnie nie do użytku produkcyjnego.

+1

więc jakie są dobre alternatywy? migracje jakiegoś typu? jakiekolwiek dobre frameworki .net, które poleciłbyś do tego? dzięki – andryuha

8

Nie ryzykowałbym tego. To, co działa dobrze, to uruchomienie go na serwerze pomostowym, który został przywrócony z produkcji, a następnie użycie narzędzia porównywania baz danych (takiego jak Red Gate) w celu zbadania zmian i wygenerowania skryptu.

Powiązane problemy