TL; DR是否有用于管理(自动创建,执行)NHibernate迁移(使用本机.NET语言)的工具?
我来自Django背景,鼓励开发Code-First。还有用于迁移的事实上的“行业标准”库,称为South。 更改架构的典型工作流程如下:
这不仅非常方便用于开发(甚至SCRUM,其中事情变化如此之快),而且还用于更新生产 - 只需确保将dev-machines和生产服务器上的迁移分开。 它对于生产来说也非常安全,因为您可以在应用之前查看并选择性地修改迁移。
在评估.NET的ORM时,我尝试过Entity Framework 5,正如我所发现的那样,它与Django-South的功能非常相似。 有一个用于创建迁移代码的Package-Manager Console命令,可以在执行之前对其进行修改,还有一个单独的命令可以执行所有尚未执行的迁移,并将它们标记为在迁移历史记录中执行。
NHibernate有这样的工具吗?
我知道SchemaUpdate
功能,但AFAIK只会更新所有需要一步更新的内容。我不会在生产中使用它,也不会在数据丢失不是灾难但仍然有些痛苦的开发过程中使用它。
我也知道SchemaUpdate可能用于将SQL语句导出到文件而不是执行它们,但它不是那么方便,因为没有历史迁移的自动管理。另外,必须手工编写SQL;)
答案 0 :(得分:3)
不知道这是否真的能回答您的问题,但是为了自动化架构更改并更新映射甚至设计映射,最好使用工具。特别是如果你有一个非常大的数据库/域模型。
我目前正在使用entity developer from devart。
我们比较了多个类似的工具,但是这个工具真的很震撼。它只有很多功能,还提供了添加自定义T4模板的功能,可以从模型生成任何你想要的东西,甚至可以在模型设计器中添加自定义属性,然后可以在代码生成器部分中使用...
您还可以将实体/属性重命名为手动更具可读性的内容,即使在数据库模式更新后该工具也会保留此内容...
当然它支持模型或数据库第一种方法...
您可以下载原因的试用版,以确定这是否符合您的需求......
答案 1 :(得分:0)
像LLBLGen这样的工具可以帮到这里.. LLBLGen Pro是一种数据访问解决方案。 您可以使用LLBLGen Pro Designer创建实体/域模型,定义映射并为四个支持的O / R映射框架之一生成源代码:实体框架,LLBLGen Pro运行时框架,NHibernate和Linq to SQL。 / p>