In NHibernate können Sie mit der SchemaUpdate-Klasse zusätzliche Änderungen an Ihrem Schema vornehmen. (Additive Änderungen würden neue Tabellen, neue Spalten usw. enthalten, aber nicht gelöscht.) SchemaUpdate ist für Entwicklungszwecke vorgesehen und nicht für die Produktion vorgesehen. Ich würde dringend empfehlen, ein SQL-Migrationstool wie Tarantino, dbdeploy.net, RikMigrations oder ähnliches auszuprobieren.
Migrationstools gibt es in zwei Varianten - SQL-Skript-basiert (Tarantino und dbdeploy.net) und code-basiert (RikMigrations und Rails-Stil-Migrationen). Mit einem code-basierten Migrationstool schreiben Sie Ihre Migrationen mit Code, der in C#, VB, Ruby, ... geschrieben wurde. SQL-Skript-basierte Tools nehmen eine geordnete Menge von SQL-Skripten entgegen. In beiden Fällen führt das Migrationstool Migrationen für Ihre Datenbank aus, die zuvor noch nicht ausgeführt wurden. (In der Regel eine Migrationen Tabelle sind die Skripte, die ausgeführt wurden, und ermöglicht es dem Werkzeug, um herauszufinden, was immer noch ausgeführt werden müssen.) Die SQL-Skripte generiert werden über:
// SchemaUpdate.Execute(bool script, bool doUpdate)
new SchemaUpdate(cfg).Execute(true, false);
und dann nach Geschmack bearbeitet. Oder Sie könnten ein neues Schema mit NHibernate's SchemaExport erstellen und ein Schema-Diff-Tool wie Microsoft Visual Studio für Datenbankprofis Ultimate jetzt mit Extra Mayo Edition (alias DataDude) oder RedGate SQL Compare verwenden. Sie müssten Transformationsskripte von Hand schreiben, da es für das SQL-Migrationstool normalerweise keine Möglichkeit gibt, zu wissen, dass die Foo char (1) -Spalte, die mit T/F gefüllt ist, in diese Bar-Bit-Spalte umgewandelt werden sollte.
Persönlich bevorzuge ich die SQL-Skript-basierten Migrationstools, da ich die Schema-Diffs mit einem Werkzeug generieren und dann nach Geschmack bearbeiten kann, anstatt die gesamte Migration mit C# oder einer ähnlichen Sprache von Hand durchführen zu müssen.
+1 für eine ausgezeichnete Antwort. –
Das ist eine tolle Sache. Wäre toll Links zu weiteren Ressourcen/Blogs zu sehen. – syclee