Я успешно заставляю Быстрый NHibernate обновлять мою базу данных путем вызова UpdateBaseFiles:
Public Sub UpdateBaseFiles()
Dim db As SQLiteConfiguration
db = SQLiteConfiguration.Standard.UsingFile(BASE_DBNAME)
Fluently.Configure() _
.Database(db) _
.Mappings(Function(m) m.FluentMappings.AddFromAssemblyOf(Of FluentMap)()) _
.ExposeConfiguration(AddressOf UpdateSchema) _
.BuildConfiguration()
End Sub
Private Sub UpdateSchema(ByVal Config As Configuration)
Dim SchemaUpdater As New SchemaUpdate(Config)
SchemaUpdater.Execute(True, True)
End Sub
Как делают я произвел DDL в файл, я делаю это, первоначально создавая схему при помощи:
Private Sub BuildSchema(ByVal Config As Configuration)
Dim SchemaExporter As New SchemaExport(Config)
SchemaExporter.SetOutputFile("schema.sql")
SchemaExporter.Create(False, True)
End Sub
но SchemaUpdate не имеет метода SetOutputFile.
SchemaUpdate имеет перегрузку, которая принимает Action
делегат, который вы можете предоставить для экспорта сценария. Вот пример на C#:
Action<string> updateExport = x =>
{
using (var file = new FileStream(path, FileMode.Create, FileAccess.Append))
using (var sw = new StreamWriter(file))
{
sw.Write(x);
}
};
new SchemaUpdate(config).Execute(updateExport, false);
Думаю, это сработает. Я не смог его протестировать, потому что SchemaUpdate не работает с SQLCE.