如何用NHibernate架构生成来更新数据库表格模式?

我想弄清楚如何使用映射NHibernateconfiguration来更新表模式,而不是丢弃和重新创build它们。

目前我正在使用NHibernate.Tool.hbm2ddl.SchemaExport对象与FluentNHibernate生成一个MySQL数据库的数据库模式。 虽然我不能说这是一个巨大的问题,每当我在数据库上调用SchemaExport.Execute ,它将删除所有的表,然后重新创build它们。

更酷的是,如果我可以只是更新现有的表结构,在可能的情况下保留数据。 但是我并不想使用商业产品或者代码生成器,因为我不喜欢代码生成,我不需要这么做,所以我会考虑为它付钱。 所以希望任何答案会记住这些警告。

SchemaUpdate对象提供数据库模式更新,当它调用void Execute(bool script, bool doUpdate)函数时,显然会生成并执行一系列SQL UPDATE语句(以及约束语句)。 SchemaUpdate类位于NHibernate.Tool.hbm2ddl名称空间中,可以在Nhibernate.dll文件中find它。

SchemaUpdate在nhibernate 1.0.2工具集指南的第15章中提到, 在这里 (第15.1.5节)。

“NHibernate常见问题解答”有(现在链接已经过期)一个更完整的如何使用SchemaUpdate的例子:

 [Test] public void Update_an_existing_database_schema() { _cfg = new Configuration(); _cfg.Configure(); _cfg.AddAssembly(Assembly.LoadFrom("DataLayer.dll")); var update = new SchemaUpdate(_cfg); update.Execute(true, false); } 

检查SchemaUpdate 。