如何更新与NHibernate架构生成数据库表的模式?如何更新与NHibernate架构生成数据库表

2019-05-13 07:51发布

我试图找出如何使用NHibernate的配置与映射到更新表架构,而不是删除并重新创建它们。

目前我使用的NHibernate.Tool.hbm2ddl.SchemaExport OBJ与FluentNHibernate来生成一个MySQL数据库的数据库架构。 虽然我不能说这是一个巨大的问题,每当我打电话SchemaExport.Execute在数据库中,它会删除所有的表,然后重新创建它们。

什么是冷却器的方式是,如果我能有它更新的数据保留在可能情况下现有的表结构。 但我真的不希望使用商用产品,或代码生成器,因为我不喜欢在一般的代码生成,我不需要这还不够,我会考虑为它付出代价。 所以希望所有的答案将保留这些告诫记在心里。

Answer 1:

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);
}


文章来源: How to update database table schemas with NHibernate schema generation?