NHibernate代码优先迁移管理工具,如EntityFramework,Django-South

时间:2013-09-27 08:00:16

标签: nhibernate fluent-nhibernate ef-migrations

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

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

  1. 更改模型代码(即添加/删除/修改类和/或属性)[当然,模型代码采用本机应用程序语言 - 这里:python]
  2. 运行schemamigration命令,该命令自动生成迁移代码[迁移代码为python]并将其写入“migrations”子目录。
  3. 如有必要,请调整自动生成的代码。例如,自动生成器非常智能,但不够智能,无法处理列重命名。
  4. 运行migrate命令,它查找“迁移”目录并执行所有尚未执行的迁移(使用迁移历史记录表计算出这一点)
  5. 这不仅非常方便用于开发(甚至SCRUM,其中事情变化如此之快),而且还用于更新生产 - 只需确保将dev-machines和生产服务器上的迁移分开。 它对于生产来说也非常安全,因为您可以在应用之前查看并选择性地修改迁移。

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

    NHibernate有这样的工具吗?

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

2 个答案:

答案 0 :(得分:3)

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

我目前正在使用entity developer from devart

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

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

当然它支持模型或数据库第一种方法...

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

答案 1 :(得分:0)

像LLBLGen这样的工具可以帮到这里.. LLBLGen Pro是一种数据访问解决方案。 您可以使用LLBLGen Pro Designer创建实体/域模型,定义映射并为四个支持的O / R映射框架之一生成源代码:实体框架,LLBLGen Pro运行时框架,NHibernate和Linq to SQL。 / p>