Synchronizování databázového modelu v .net rubrika: Programování: .Net
Ahoj,
Už delší dobu se snažíme najít ideální workflow pro verzování a spravování databázového schématu.
Vycházíme z toho, že u každého commitu by se měla nacházet akutální verze db. Často se nám stane, že vývojáři mají u sebe jinou verzi db, na stage serveru běží jiná verze a v releasu je jiná.
Ve vývoji jsme již vyžkoušeli :
- Manuální synchronizační scripty
- Migrace
- Synchronizační scripty vygenerované z Visual Studa
Nakonec jsme skončili u migrací (FluentMigrator) ale i tady narážíme občas na problémy.
Jak řešíte synchornizace datových modelů vy?
Díky
Když jsem tohle přes lety řešil, tak jsem nic uspokojivého nenašel, takže jsem si to udělal sám. Je to pár tříd a principem je to velmi podobné FluentMigratoru, a funguje nám to bezvadně. Základní interface vypadá takto:
public interface IMigration
{
int FromVersion { get; }
int ToVersion { get; }
string Name { get; }
void Up();
void Down();
}
V praxi to vypadá tak, že třídy migrací jsou ve stejném sub-namespace jako kód, který pracuje s DB schématem, které je obráběno těmi migracemi. Takže máme kód pracující nad schématem a definici schémat (~migrace) velmi blízko sebe.
Při nasazení do prostředí (Stage/Production) se automagicky zajistí, že se databáze uvede do požadované verze. To samé se automagicky stane před spuštěním integračních testů proti databázi.
Protože píšeš, že používáte FluentMigrator (tedy něco velmi podobného jako my), tak by mě zajímalo, co jsou ty občasné problémy.
Pro zobrazení všech 5 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře