Ich versuche herauszufinden, wie die NHibernate-Konfiguration mit Mapping verwendet wird, um Tabellenschemas zu aktualisieren, anstatt sie zu löschen und neu zu erstellen.Wie Aktualisieren von Datenbanktabellenschemas mit NHibernate-Schemagenerierung?
Derzeit verwende ich das NHibernate.Tool.hbm2ddl.SchemaExport
Obj mit FluentNHibernate, um das Datenbankschema für eine MySQL-Datenbank zu generieren. Während ich nicht sagen kann, dass es ein riesiges Problem ist, wenn ich SchemaExport.Execute
in der Datenbank anrufe, wird es alle Tabellen fallen lassen und sie dann neu erstellen.
Was wäre viel cooler, wenn ich es nur die vorhandenen Tabellenstrukturen aktualisieren könnte, die Daten beibehalten, wo es möglich ist. Aber ich möchte nicht wirklich ein kommerzielles Produkt oder einen Code-Generator verwenden, weil ich die Code-Generierung im Allgemeinen nicht mag, und ich brauche das nicht genug, dass ich darüber nachdenken würde, dafür zu bezahlen. Also hoffentlich würde jede Antwort diese Vorbehalte berücksichtigen.
wir die Einstellung des Feldes einmal zum Beispiel erstellt nicht ändern können Stringlänge von nvarchar ändern (255) zu nvarchar (45), können wir? –
Das ist eine gute Frage, die create-Version von hbm2ddl würde dies ermöglichen, aber ich habe bemerkt, dass ich manchmal die Tabellen löschen muss, bevor die Erstellung erfolgreich ausgeführt wird. –
Das funktioniert hervorragend, diese Technik ist auch für Fluent NHibernate geeignet. – Contango