NHibernate发电机

NHibernate发电机

NHibernate Generators

什么是为NHibernate生成实体类和/或hbm文件和/或sql脚本的最佳工具。

以下列表来自http://www.hibernate.org/365.html,为什么这是最好的?

  • Moregen免费的开源(GPL)O / R生成器,可以合并到现有的Visual Studio项目中。也将更改合并到生成的类。
  • NConstruct Lite Free工具,用于生成NHibernate O / R映射源代码。不同的数据库支持(Microsoft SQL Server,Oracle,Access)。
  • GENNIT NHibernate代码生成器使用WYSIWYG在线UML设计器生成NHibernate代码的免费/商业Web 2.0代码。
  • 具有NHibernate模板商业产品的GenWise Studio;导入现有数据库并生成所有XML和类,包括工厂。它还可以为您的NHibernate BO-Layer自动生成一个asp.net Web应用程序。
  • HQL Analyzer和hbm.xml GUI编辑器
  • Mats Helander的ObjectMapper是具有NHibernate支持的映射GUI
  • MyGeneration是基于模板的代码生成器GUI。它的模板库包括用于从数据库生成映射文件和类的模板。
  • AndroMDA是一个开放源代码生成框架,该框架使用模型驱动架构(MDA)将UML模型转换为可部署的组件。它支持使用NHibernate作为其持久性框架的数据访问层的生成。
  • NH的CodeSmith模板
  • NHibernate Helper Kit是一个VS2005加载项,用于生成类和映射文件。
  • NConstruct-智能软件工厂商业产品;通过简单的向导过程,可为信息系统的所有层生成完整的.NET C#源代码。基于NHibernate的O / R映射。对于WinForms和ASP.NET 2.0。

我认为您应该改用Fluent NHibernate。生成映射总是使您达到80%的水平,并且仍然必须自定义以获取所需的内容。 Fluent-NHibernate允许您使用可编译且易于重构的API映射实体。


有一个新的2.0 Beta 2版本可用,其中包含许多新功能并支持流畅的nhibernate,一对多和多对多映射。

http://www.codeplex.com/Wikipage?ProjectName=nmg


您可以尝试安装到Visual Studio 2010中的Mindscape NHibernate Designer。尽管我还没有尝试过。


一个商业工具就是Visual NHibernate。
请注意,我为Slyce Software工作,该公司创建了Visual NHibernate。

更新:Visual NHibernate现在已经开源。请参阅:公告


您需要问自己的第一个问题是,为什么甚至需要发电机。老实说,根据我的经验,编写hbm文件一点都不困难。

话虽如此,如果您真的不想编写hbm文件,也许您应该研究Active Record。


您应该看一下Devart的NHibernate设计器:NHibernate的实体开发人员

注意:Devart公司。


我尝试了NConstruct lite和Codesmith。
我需要从现有数据库中获取用VB编写的现有asp.net项目的对象模型,这是我的经验:

Codesmith的缺点:

  • 不检测表之间的继承
  • 不映射数据库视图
  • 复杂的用法

Codesmith的优点:

  • 生成C#和VB
  • 支持许多数据库引擎,包括PostgreSQL
  • Visual Studio整合

NConstruct缺点:

  • 不生成VB,仅C#
  • 很少的数据库引擎,只有SQL-Server,Oracle和MS-Access

NConstruct的优点:

  • 查看地图
  • 自动检测某些继承(对于1-1关系)
  • 简单

以我为例,NConstruct为我完成了约60%的工作。


我听说过一些有关流利的内容,但从未使用过,所以我不能说。您是否为hbm文件设置了智能感知?我只是编写自己的xml文件,但是我知道那不是您要的内容。

您将寻找SQL脚本做什么,生成表? NHibernate的优点之一是它在flay查询生成中,因此您不必为所有对象创建SP。


是的,编写hbm文件非常简单。

但是,当您拥有大型数据库时,这是一个巨大的痛苦。


推荐阅读

    linux分隔文件命令?

    linux分隔文件命令?,系统,信息,文件,命令,位置,指令,文件夹,目录,前缀,方法,l

    linux改文件权限命令?

    linux改文件权限命令?,系统,工具,档案,权限,文件,信息,命令,目录,选项,用户,

    linux命令联想工具?

    linux命令联想工具?,地址,工作,系统,工具,状态,标准,信息,命令,目录,左下角,L

    linux磁盘列表命令?

    linux磁盘列表命令?,情况,管理,系统,单位,信息,数据,命令,磁盘,服务,时间,lin

    linux脚本命令输信息?

    linux脚本命令输信息?,系统,信息,代码,脚本,数据,工具,发行,命令,变量,文件,l

    linux命令交换文件名?

    linux命令交换文件名?,命令,文件,数据,名称,工具,地址,软件,系统,基础知识,

    linux上启动脚本命令?

    linux上启动脚本命令?,服务,状态,系统,代码,脚本,工作,周期性,命令,文件,方

    linux文件夹转移命令?

    linux文件夹转移命令?,系统,文件,命令,位置,材料,信息,工具,电脑,目录,源文

    linux转移文件命令?

    linux转移文件命令?,文件,命令,密码,电脑,位置,名称,信息,系统,目录,目标,lin

    linux下替换文件命令?

    linux下替换文件命令?,文件,一致,评论,名称,标的,资料,工作,命令,字符串,内

    linux文件nl命令?

    linux文件nl命令?,地址,工作,信息,系统,情况,标准,实时,对比,百度,命令,linux

    linux寻找文件夹命令?

    linux寻找文件夹命令?,名称,命令,文件,位置,工作,标准,目录,子目录,文件名,

    linux跳到文件尾命令?

    linux跳到文件尾命令?,系统,文件,命令,管理,状态,实时,末尾,光标,内容,编辑,l

    linux把文件复制命令?

    linux把文件复制命令?,名字,文件,软件,系统,位置,目录,命令,源文件,目标,文

    linux文件夹合并命令?

    linux文件夹合并命令?,文件,对比,第一,下来,命令,文件夹,两个,字段,内容,数

    linux下文件创建命令?

    linux下文件创建命令?,名字,名称,首次,命令,文件,系统,密码,文件名,文件夹,

    linux命令行安装文件?

    linux命令行安装文件?,软件,官网,密码,中心,电脑,文件,命令,终端,指令,版本,L

    linux文件解包命令?

    linux文件解包命令?,系统,地址,命令,文件,管理,手机,数据,工具,标准,单位,lin

    linux重启文件命令?

    linux重启文件命令?,系统,工作,标准,设备,命令,灵活,用户,电源,方式,级别,lin