"Migrate" 带 NHibernate 的数据库
"Migrate" database with NHibernate
我有一个使用 NHibernate 的程序,最近我们对数据库模型进行了更新,我们添加了一个 table。现在我们使用 SQLite 来同步部分 "central" 数据库,以在程序中启用离线支持。现在问题开始出现了......当用户拥有更新版本的程序,但旧版本的数据库 NHibernate 将无法正常工作。
所以我想"migrate" 数据库到新模式。我有 SchemaExport
测试,但这会清除数据库中的所有数据。我必须手动创建 table 吗?
此外,当我尝试访问我的数据库中的花边加载 属性 时,我才注意到这一点,是否可以查看模型是否与数据库模式相关?
改用SchemaUpdate
。
它将使用映射文件检查您当前的架构。如果映射文件中的任何更改(table 如您所说添加)将反映到基础 RDBMS。 NHibernate 将自动生成 DDL 并将执行以匹配更改。
示例代码如下:
SchemaUpdate schemaUpdate = new SchemaUpdate(configuration);
schemaUpdate.Execute(false, true);
根据您的需要,您可以使用两个参数 Execute
-- 不言自明。
我有一个使用 NHibernate 的程序,最近我们对数据库模型进行了更新,我们添加了一个 table。现在我们使用 SQLite 来同步部分 "central" 数据库,以在程序中启用离线支持。现在问题开始出现了......当用户拥有更新版本的程序,但旧版本的数据库 NHibernate 将无法正常工作。
所以我想"migrate" 数据库到新模式。我有 SchemaExport
测试,但这会清除数据库中的所有数据。我必须手动创建 table 吗?
此外,当我尝试访问我的数据库中的花边加载 属性 时,我才注意到这一点,是否可以查看模型是否与数据库模式相关?
改用SchemaUpdate
。
它将使用映射文件检查您当前的架构。如果映射文件中的任何更改(table 如您所说添加)将反映到基础 RDBMS。 NHibernate 将自动生成 DDL 并将执行以匹配更改。
示例代码如下:
SchemaUpdate schemaUpdate = new SchemaUpdate(configuration);
schemaUpdate.Execute(false, true);
根据您的需要,您可以使用两个参数 Execute
-- 不言自明。