Jak zaktualizować Schematy tabeli bazy danych za pomocą NHibernate schema generation?
Próbuję dowiedzieć się, jak używać konfiguracji NHibernate z mapowaniem do aktualizacji schematów tabel, zamiast ich upuszczania i odtwarzania.
Obecnie używam NHibernate.Tool.hbm2ddl.SchemaExport
obj z FluentNHibernate do generowania schematu bazy danych dla bazy danych mysql. Chociaż nie mogę powiedzieć, że jest to ogromny problem, za każdym razem, gdy wywołuję SchemaExport.Execute
w bazie danych, to zrzuci wszystkie tabele, a następnie odtworzy je.
Co byłoby fajniejsze, gdybym tylko mógł to zaktualizować istniejące struktury tabel, w miarę możliwości zachowujące dane. Ale tak naprawdę nie chcę używać produktu komercyjnego lub generatora kodu, ponieważ nie lubię generowania kodu w ogóle, i nie potrzebuję tego na tyle, że rozważyłbym zapłacenie za to. Więc mam nadzieję, że każda odpowiedź będzie pamiętać o tych zastrzeżeniach.
1 answers
Obiekt SchemaUpdate zapewnia aktualizację schematu bazy danych, pozornie generując i wykonując serię instrukcji SQL UPDATE (jak również instrukcji constraint), gdy jest to void Execute(bool script, bool doUpdate)
funkcja jest wywoływana. Klasa SchemaUpdate znajduje się w przestrzeni nazw NHibernate.Tool.hbm2ddl
, którą można znaleźć w Nhibernate.plik dll.
SchemaUpdate jest wspomniana w rozdziale 15 przewodnika po zestawie narzędzi nhibernate 1.0.2, tutaj (sekcja 15.1.5).
"NHibernate FAQ" had (link teraz wygasł) pełniejszy przykład użycia SchemaUpdate:
[Test]
public void Update_an_existing_database_schema()
{
_cfg = new Configuration();
_cfg.Configure();
_cfg.AddAssembly(Assembly.LoadFrom("DataLayer.dll"));
var update = new SchemaUpdate(_cfg);
update.Execute(true, false);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-30 13:37:34