我试图找出如何使用NHibernate的配置与映射到更新表架构,而不是删除并重新创建它们。
目前我使用的NHibernate.Tool.hbm2ddl.SchemaExport
OBJ与FluentNHibernate来生成一个MySQL数据库的数据库架构。 虽然我不能说这是一个巨大的问题,每当我打电话SchemaExport.Execute
在数据库中,它会删除所有的表,然后重新创建它们。
什么是冷却器的方式是,如果我能有它更新的数据保留在可能情况下现有的表结构。 但我真的不希望使用商用产品,或代码生成器,因为我不喜欢在一般的代码生成,我不需要这还不够,我会考虑为它付出代价。 所以希望所有的答案将保留这些告诫记在心里。
该SchemaUpdate工具对象提供数据库架构更新,显然是通过生成和执行一系列SQL UPDATE语句的(以及约束语句)时,它的void Execute(bool script, bool doUpdate)
函数被调用。 该SchemaUpdate工具类在NHibernate.Tool.hbm2ddl
命名空间,它可以在Nhibernate.dll文件中找到。
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);
}