5

TL;DR 是否有任何工具用于管理(自动创建、执行)NHibernate 迁移(使用本机 .NET 语言)?

我来自鼓励开发 Code-First 的 Django 背景。还有用于迁移的事实上的“行业标准”库,称为 South。更改架构的典型工作流程如下:

  1. 更改模型代码(即添加/删除/修改类和/或属性)[当然,模型代码是本机应用程序语言 - 这里:python]
  2. 运行自动生成迁移代码 [迁移代码是 python] 并将其写入“迁移”子目录的 schemamigration 命令。
  3. 如有必要,调整自动生成的代码。自动生成器非常聪明,但不够聪明,无法处理例如列重命名。
  4. 运行 migrate 命令,查找“migrations”目录并执行所有尚未执行的迁移(这个是使用迁移历史表计算出来的)

这不仅对于开发(甚至是变化如此之快的 SCRUM)非常方便,而且对于更新生产也非常方便——只需确保将开发机器和生产服务器上的迁移分开。它对于生产也非常安全,因为您可以在应用迁移之前查看并选择修改迁移。

在评估 .NET 的 ORM 时,我尝试了 Entity Framework 5,我发现它与 Django-South 的功能非常相似。有一个用于创建迁移代码的 Package-Manager 控制台命令,可以在执行之前对其进行修改,还有一个单独的命令可以执行所有尚未执行的迁移,并将它们标记为在迁移历史记录中已执行。

NHibernate 有这样的工具吗?

我知道SchemaUpdate功能,但 AFAIK 它只是更新了所有需要一步更新的东西。我不会在生产中使用它,也不会在数据丢失不是灾难但仍然有些痛苦的开发过程中使用它。我也知道 SchemaUpdate 可能用于将 SQL 语句导出到文件而不是执行它们,但这并不方便,因为没有历史迁移的自动管理。另外,必须手动编写 SQL ;)

4

2 回答 2

3

不知道这是否真的回答了您的问题,但要自动更改架构并更新您的映射,甚至设计您的映射,使用工具来实现这一点是个好主意。特别是如果您有一个非常大的数据库/域模型。

我目前正在与devart 的实体开发人员合作

我们比较了多个类似的工具,但这个真的很摇滚。它只是具有如此多的功能,还提供了添加自定义 T4 模板以从模型中生成您想要的任何内容的功能,甚至向模型设计器添加自定义属性,然后可以在代码生成器部分中使用这些属性......

您还可以手动将实体/属性重命名为更易读的名称,即使在从数据库模式更新后,该工具也会保留它...

当然,它同时支持模型或数据库优先方法......

您可以下载 Cause 的试用版,以确定这是否符合您的需求...

于 2013-09-29T14:31:06.780 回答
0

像 LLBLGen 这样的工具可以在这里提供帮助。LLBLGen Pro 是一种数据访问解决方案。您使用 LLBLGen Pro 设计器来创建实体/域模型、定义映射并为以下四个受支持的 O/R 映射框架之一生成源代码:实体框架、LLBLGen Pro 运行时框架、NHibernate 和 Linq to SQL。

于 2014-07-28T03:40:16.493 回答