我在开发阶段使用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));
}
在此之后,我将架构更新脚本保存到以时间戳命名的脚本文件。
这是在NHibernate中管理架构更改的好方法吗?
有任何重大缺点吗?
答案 0 :(得分:0)
总之 - 这取决于。我已经用它来创建脚本,然后我手工编辑,但我确定我在某处读到它不会为现有表创建新的非空列 - 这似乎有意义,因为NHibernate如何知道如何填充列?