NHibernate的发电机
什么是为NHibernate生成实体类和/或HBM文件和/或SQL脚本的最佳工具。
以下列表来自http://www.hibernate.org/365.html ,这是最好的,为什么?
- Moregen免费,开源(GPL)O / R发生器,可以合并到现有的Visual Studio项目。 还将更改合并到生成的类。
- 用于生成NHibernate O / R映射源代码的NConstruct Lite免费工具。 不同的数据库支持(Microsoft SQL Server,Oracle,Access)。
- GENNIT NHibernate代码生成器使用WYSIWYG在线UMLdevise器免费/商业Web 2.0代码生成NHibernate代码。
- GenWise Studio与NHibernate模板商业产品; 导入您现有的数据库并生成所有XML和类,包括工厂。 它也可以自动为你的NHibernate BO-Layer生成一个asp.net web应用程序。
- HQL分析器和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。
我想你应该看看stream利的NHibernate 。 生成映射总能让你达到80%的标记,而且你还得定制才能得到你想要的。 stream利的NHibernate允许你映射你的实体编译安全和重构友好的API。
有一个新的2.0 Beta 2版本提供了大量的新function和支持stream利的nhibernate,一对多和多对多的映射。
您可以尝试Mindscape NHibernatedevise器安装到Visual Studio 2010.虽然我还没有尝试过。
Visual NHibernate是一个商业工具。 请注意,我为创buildVisual NHibernate的公司Slyce Software工作。
更新: Visual NHibernate现在已经开源。 见: 公告
你需要问自己的第一个问题是为什么你甚至需要一个发电机。 老实说,根据我的经验,写hbm文件并不难。
这就是说,如果你真的不想写hbm文件,也许你应该看看活动logging 。
我听说过一些stream利的东西,但从来没有用过,所以我不能说。 你有没有为hbm文件设置intellisense? 我只是写我自己的XML文件,但我知道这不是你在找什么。
你会在寻找SQL脚本,生成表? NHibernate的美丽之一就是它的剥离查询一代,所以你不必为所有的对象创buildSP。
你应该看看Devart的NHibernate Designer: Entity Developer for NHibernate
注:Devart公司 。
我尝试了两种,NConstruct lite和codemith。 我需要从一个现有的数据库中获取用VB编写的现有的asp.net项目的对象模型,这是我的经验:
codesmith缺点:
- 不检测表之间的inheritance
- 不映射数据库视图
- 复杂的用法
codesmith优点:
- 生成C#和VB
- 支持很多数据库引擎,包括PostgreSQL
- Visual Studio集成
NConstruct缺点:
- 不生成VB,只有C#
- less数数据库引擎,只有SQL-Server,Oracle和MS-Access
NConstruct优点:
- 地图的意见
- 自动检测一些inheritance(对于1-1关系)
- 简单
在我的情况下,NConstruct为我做了大约60%的工作。
是的,编写HBM文件是非常简单的。
然而,当你拥有一个大的数据库时,这是一个巨大的痛苦。
- 查询和(x像'a'或y像'a')
- 用NHibernate映射一对多的最简单正确的方法
- 哪种.NET数据types最适合映射NHibernate中的NUMBER Oracle数据types?
- NHibernate使用QueryOver与WHERE IN
- NHibernate或stream利的NHibernate?
- Nhibernate:如何用一对多的关系表示多对多的关系?
- 通过代码进行NHibernate 3.2映射的文档和示例
- 在NHibernate Linq提供程序中获取vs FetchMany
- 条件SpatialRestrictions.IsWithinDistance NHibernate.Spatial