Version 4 (modified by grzesiek, 14 years ago) |
---|
Zarządzamy strukturą bazy danych
Do zarządzania zmianami w bazie danych korzystamy z projektu https://github.com/schambers/fluentmigrator/. Niezbędne operacje jak np dodanie, usunięcie, zmiana nazwy tabeli lub kolumny umieszczamy w projekcie adMoto.Migrate w katalogu Migrations
nazwa pliku oraz klasy powinna składać się z _YYYYMMDDHHmm_Name gdzie:
- YYYY - rok
- MM - miesiąc
- DD - dzień
- HH - godzina
- mm - miesiąc
- name - dowolna nazwa klasy
Klasa powinna być opatrzona atrybutem [Migration(YYYYMMDDHHmm)] jest to kolejny numer migracji do wykonania, oraz dziedziczyć po klasie Migration z pakietu "FluentMigrator". W klasie należy przeciążyć dwie metody Up oraz Down, Up wykorzystywana do wprowadzenia zmian do bazy danych, Down powinna wycofać zmiany wprowadzone w metodzie Up, przykład:
using FluentMigrator; namespace adMoto.Migrate { [Migration(201107071547)] public class _201107071541_Test : Migration { // dodanie testowej kolumny do tabeli Customers public override void Up() { Create.Column("TestColumn").OnTable("Customers") .AsString(int.MaxValue) .Nullable(); } // usunięcie testowej kolumny z tabeli Customers public override void Down() { Delete.Column("TestColumn").FromTable("Customers"); } } }
Uruchomienie migracji odbywa się automatycznie przy release projektu na domenę testową nh.test.truck.pl, na sandbox jeszcze nie. Wykonanie rollbacka polega na wywołaniu polecenia rake.net.exe db:rollback - cofa zmiany do ostatnio używanej wersji bazy (należy się upewnić czy rake.net posiada odpowiednią konfiguracje - test,sandbox, production) Wykonanie polecenia rake.net.exe db:rollback version - cofa zmiany do konkretnej wersji bazy danych. Używane wersje bazy danych są przechowywane w katalogu C:\temp\DataBaseVersionInfo?\ (konfiguracja lokalna i testowa)
Więcej informacji znajdziecie na wiki projektu: https://github.com/schambers/fluentmigrator/wiki oraz w artykułach społeczności https://github.com/schambers/fluentmigrator/wiki/Community-articles
Acha, niestety nadal należy utrzymywać mapowanie klasy na pliki xml dla NHibernate :)