.net - 如何使用 NHibernate 模式生成更新数据库表模式?

标签 .net nhibernate orm fluent-nhibernate schema

我试图弄清楚如何使用 NHibernate 配置和映射来更新表架构,而不是删除并重新创建它们。

目前,我正在使用 NHibernate.Tool.hbm2ddl.SchemaExport obj 和 FluentNHibernate 来生成 mysql 数据库的数据库架构。虽然我不能说这是一个大问题,但每当我在数据库上调用 SchemaExport.Execute 时,它都会删除所有表,然后重新创建它们。

如果我可以让它更新现有的表结构,尽可能保留数据,那就更酷了。但我真的不想使用商业产品或代码生成器,因为我一般不喜欢代码生成,而且我并不需要它,以至于我会考虑为此付费。因此,希望任何答案都能牢记这些注意事项。

最佳答案

SchemaUpdate 对象提供数据库架构更新,在 void 执行时明显生成并执行一系列 SQL UPDATE 语句(以及约束语句) ( bool 脚本, bool doUpdate) 函数被调用。 SchemaUpdate 类位于 NHibernate.Tool.hbm2ddl 命名空间中,可以在 Nhibernate.dll 文件中找到。

nhibernate 1.0.2 工具集指南的第 15 章提到了 SchemaUpdate,here (第 15.1.5 节)。

“NHibernate FAQ”(链接现已过期)提供了如何使用 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);
}

关于.net - 如何使用 NHibernate 模式生成更新数据库表模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/366176/

相关文章:

java - Hibernate 预加载查询

c# - 存储具有许多数据点的用户

java - XSL 转换 - 通过字符串内容选择节点 ID

c# - 如何在自定义 .NET Web 控件中指定必需的属性?

php - Eloquent ORM - 模型关系

nhibernate - 从 Fluent Nhibernate 模式生成中排除一些表

c# - Fluent NHibernate - 将组件/值类型对象的字典映射为 HasMany

c# - 具有 API 的虚拟网络适配器驱动程序最好使用 c# api

c# - 如何在我的 ASP.NET Core MVC 项目中引用 Microsoft.JQuery.Unobtrusive.Ajax

nhibernate - 在 Fluent Nhibernate 中设置实体和关系的缓存?