NHibernate中的Configuration.GenerateSchemaUpdateScript()是管理数据库模式更改的好方法

Chr*_*ger 5 nhibernate

我在开发阶段使用NHibernate映射作为我的应用程序的定义模式,而我正在使用该NHibernate.Tool.hbm2ddl.SchemaExport()方法生成一个创建脚本的模式定义.

现在,我已经考虑使用该Configuration.GenerateSchemaUpdateScript()方法生成如下的数据库更改脚本:


var dialect = Dialect.GetDialect(configuration.Properties);
string[] schemaUpdateScript;
using (var conn = new SqlConnection(
        configuration.GetProperty("connection.connection_string")))
{
  conn.Open();
  schemaUpdateScript = configuration.GenerateSchemaUpdateScript(dialect, 
                            new DatabaseMetadata(conn, dialect));
}
Run Code Online (Sandbox Code Playgroud)

在此之后,我将架构更新脚本保存到以时间戳命名的脚本文件.

这是在NHibernate中管理模式更改的好方法吗?

有什么重大缺点吗?

Dav*_*emp 0

简而言之 - 这取决于。我用它来创建脚本,然后手动编辑它,但我确信我在某处读过它不会为现有表创建新的非空列 - 这似乎是有道理的,因为 NHibernate 如何知道如何填充列?