首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nHibernate与LLBLGen Pro

nHibernate与LLBLGen Pro
EN

Stack Overflow用户
提问于 2009-07-11 17:26:54
回答 8查看 10.8K关注 0票数 26

我正试图用ORM工具解决转移到和缩小到两个候选人。

nHibernateLLBLGen Pro

请告诉我这两种工具的优缺点,特别是如果你在这两种工具上都有经验的话。我对任何其他工具并不感兴趣,但我需要一些提示,这样我就可以决定花时间学习哪种工具.

我已经知道,一个是免费的,一个不是,我也知道nHibernate可能需要一些学习.

非常感谢,理查德

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-07-12 22:42:24

我两者都用过。起初,我在nHibernate上被卖了,并且拒绝尝试其他任何东西,尽管我知道其他的选择。

使用LLBLGen Pro时,我对此表示怀疑,但很快也看到了它的优点。我没有完全放弃nHibernate。我将继续把int放在我的“工具盒”中。我发现LLBLGen在某些情况下很有用,特别是在与已经存在的数据库交互时,您没有选择重新设计它。从数据库生成我的LLBLGen实体对象需要不到一个小时(当然取决于数据库的大小),而不必用nHibernate手动编写所有这些对象,并执行映射。nHibernate缺少一个很好的图形界面来创建映射。当数据库庞大,需要在应用程序中访问数千个表时,这个事实就变得更加重要了。

虽然LLBLGen更像是一个数据访问层生成器(我通常不是DAL生成器的粉丝),但它有许多“真正的ORM”工具的特性。在我看来,这两个世界都是最好的。一旦你开始使用它,你就会开始意识到它是非常灵活和可扩展的。我非常喜欢的一个部分是,我可以为生成的实体对象创建部分类,在这里我可以在业务逻辑中进行编码以及验证。

代码生成是模板化的,所以您可以完全控制它生成的代码。使用nHibernate,我发现自己一遍又一遍地编写了一些相同的代码。使用LLBLGen,我可以更快地生成它,并将注意力集中在业务逻辑和问题上。

对于刚开始使用ORM类型工具的人来说,我真的建议从LLBLGen开始,因为nHibernate可能会让人无法抗拒。最后,你会取得同样的结果(或多或少)。

编辑#1: LLBLGen现在也有100%的支持LINQ。(因此,如果您出于这个原因喜欢LINQ )进一步的LLBLGen可以支持许多数据库,其中LINQ只适用于。

编辑#2: 根据Graviton您可以使用CodeSmith为nHibernate生成一些代码。这确实很酷,但是对于一个新加入ORM的人来说,我仍然会推荐LLBLGen。对我来说,这意味着添加更多的依赖项,而LLBLGen将其全部放在一个包中。另外,就像我之前说过的,学习曲线不那么陡峭,你也会得到同样的好处,如果你决定去nHibernate,这也会帮助你轻松地进入那里。

票数 34
EN

Stack Overflow用户

发布于 2009-07-11 17:39:49

主要的区别是LLBLGen是一个代码生成器,而NHibernate是一个“真正的”ORM库。

LLBLGen advantages

  • 易于使用的模型设计师。可以导入现有的数据库架构。
  • 全类型对象模型与查询语言

LLBLGen LLBLGen

  • 您需要设计器应用程序来更改模型。
  • 不自由
  • 会使代码膨胀,因为生成了大量的代码。

NHibernate advantages

  • 不需要设计程序。只编码
  • 广泛使用(基于最流行的Java ORM,Hibernate)
  • 非常强大的映射您可以想象的任何数据模型。
  • 开源

NHibernate NHibernate

  • 难学
  • 没有您想要的强类型(特别是查询)

当然,这只是我个人的观点.

票数 20
EN

Stack Overflow用户

发布于 2009-09-18 07:21:26

我打了一个相当长的答案,才意识到这是一个有点老的问题。哦,好吧。它仍然非常相关。

你已经把你的名单缩小到了.NET世界中最好的两位候选人。我对这两种方法的经验都很有限,但我已经广泛地阅读了这两种方法的优缺点。它们确实以不同的方式满足了不同的需求。

在即将发布的LLBLGen Pro3.0中,Frans谈到了添加特性以生成NHibernate映射。因此,这甚至不一定是一项或两项决定。

如果您想要进行“类优先”设计(相对于“数据库优先”设计),NHibernate几乎是您目前的最佳和唯一的选择( LLBLGen Pro和实体框架都不支持这种模式,尽管听起来实体框架正在改进它在下一个版本中的支持)。

NHibernate和LLBLGen Pro都努力工作,以便很好地处理遗留数据库,而这些数据库是您无法更改的,并且必须与之共存。这是他们的共同优势。他们都和Linq一起工作。它们都支持一定数量的图形化建模,尽管LLBLGen Pro在这方面要好得多(ActiveWriter for NHibernate感觉像Visual中的LinqToSql设计人员,但它并不是真正丰富的特性)。

LLBLGen Pro具有更强的代码生成能力,但是过多的代码生成会导致测试性和可维护性受损(一个小的调整会导致大量的代码需要重新测试)。

虽然NHibernate希望帮助您处理类继承等相当复杂的对象/关系映射场景,但LLBLGen Pro实际上只是以非常快速的方式将数据库公开为数据层和业务对象。

如果你可以购买LLBLGen专业,并有一些时间,我会尝试两者,看看哪一个更符合你的需要。在任何情况下,学习这两种语言都对你的简历有好处。

所以,最后,我会说这是情境性的。在大多数情况下,NHibernate的成本和缺乏严重缺陷都是一个很有说服力的案例。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1114215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档