In NHibernate, è possibile utilizzare la classe SchemaUpdate per apportare modifiche aggiuntive allo schema. (Le modifiche aggiuntive includono nuove tabelle, nuove colonne, ecc., Ma non eliminazioni.) SchemaUpdate è destinato a scopi di sviluppo e non è concepito per essere eseguito in produzione. Consiglio vivamente di controllare uno strumento di migrazione SQL come Tarantino, dbdeploy.net, RikMigrations o simili.
Gli strumenti di migrazione sono disponibili in due versioni: basata su script SQL (Tarantino e dbdeploy.net) e basata su codice (migrazioni in stile RikMigrations e Rails). Con uno strumento di migrazione basato su codice, si scrivono le migrazioni utilizzando il codice scritto in C#, VB, Ruby, ... Gli strumenti basati su script SQL richiedono un set ordinato di script SQL. In entrambi i casi, lo strumento di migrazione esegue eventuali migrazioni sul database che non sono state eseguite prima. (In genere una tabella migrazioni elenca gli script che sono stati eseguiti e permette lo strumento per capire quali devono ancora essere eseguito.) Gli script SQL vengono generati tramite:
// SchemaUpdate.Execute(bool script, bool doUpdate)
new SchemaUpdate(cfg).Execute(true, false);
e poi modificati a piacere. Oppure è possibile generare un nuovo schema utilizzando SchemaExport di NHibernate e utilizzando uno strumento di definizione dello schema come Microsoft Visual Studio per Database Professionals Ultimate Now con Extra Mayo Edition (aka DataDude) o RedGate SQL Compare. Dovresti scrivere gli script di trasformazione a mano in quanto in generale non esiste alcun modo per lo strumento di migrazione SQL di sapere che la colonna Foo char (1) piena di T/F deve essere trasformata in quella colonna bit di Bar.
Personalmente preferisco gli strumenti di migrazione basati su script SQL in quanto posso generare le differenze dello schema utilizzando uno strumento e quindi modificare per assaggiare piuttosto che dover eseguire manualmente l'intera migrazione utilizzando C# o un linguaggio simile.
fonte
2010-10-28 00:50:17
+1 per un'ottima risposta. –
Questo è fantastico. Sarebbe bello vedere link a ulteriori risorse/blog su questo. – syclee