nHibernate与LLBLGen Pro

Rip*_*ppo 26 nhibernate llblgenpro

我正在尝试使用ORM工具转移到并将其缩小为两个候选者.

nHibernateLLBLGen Pro

请你们使用这两种工具给我优缺点,特别是如果你有这两种工具的经验.我对其他任何工具都不感兴趣,但我想要一些提醒,所以我可以决定花时间学习哪种工具....

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

非常感谢,理查德

7wp*_*7wp 34

我用过这两个.起初我在nHibernate上卖掉了,即使我知道其他选项,也拒绝尝试其他任何东西.

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

虽然LLBLGen更像是一个数据访问层生成器(我通常不是DAL生成器的粉丝),但它具有许多"真正的ORM"工具所具有的功能.在我看来,它拥有两全其美.一旦你开始使用它,你就会开始意识到它非常灵活和可扩展.我喜欢的一个部分是我可以为生成的实体对象创建部分类,我可以在其中编写业务逻辑代码以及验证.

代码生成是模板化的,因此您可以完全控制它生成的代码.有了nHibernate,我发现自己一遍又一遍地编写了一些相同类型的代码.使用LLBLGen,我可以生成它并专注于业务逻辑并更快地发布.

对于刚刚开始使用ORM类型工具的人,我真的建议从LLBLGen开始,因为nHibernate可能会让人不知所措.最后,您将获得相同的结果(或多或少).

编辑#1: LLBLGen现在也对LINQ提供100%的支持.(因此,如果您因此而喜欢LINQ to SQL),LLBLGen可以支持许多数据库,其中LINQ to SQL仅适用于Microsoft SQL数据库.

编辑#2: 根据Graviton,您可以使用CodeSmith为nHibernate执行一些代码生成.这真的很酷,但对于ORM的新手,我仍然会推荐LLBLGen.对我来说,添加更多的依赖关系,LLBLGen在一个包中都有.就像我之前说的那样,学习曲线不那么陡峭,你会得到同样的好处,如果你决定去那里,这也有助于你轻松进入nHibernate.

  • LLBGen的第3版现在以NHibernate,Entity Framework和Linq to SQL为目标. (5认同)
  • 我们使用LLBLGen LINQ来解决极其复杂的问题.它不是域驱动开发的最佳工具,但如果你想首先从数据库的角度思考问题,那么它就是一个明显的赢家. (2认同)

Phi*_*ert 20

主要区别在于LLBLGen是一个代码生成器,而NHibernate是一个"真正的"ORM库.

LLBLGen的优点:

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

LLBLGen的缺点:

  • 您需要设计器应用程序来更改模型
  • 不是免费的
  • 由于生成了大量代码,因此可能会使代码膨胀

NHibernate的优点:

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

NHibernate的缺点:

  • 很难学
  • 不像人们想的那样强类型(特别是查询)

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

  • 菲利普 - 不是真的.LLBLGenPro是一个带有内置代码生成器的ORM,而不仅仅是代码生成器. (3认同)
  • 我也不会选择,但我必须同时使用它们,我更喜欢NHibernate而不是LLBLGen.原因是我讨厌依赖外部代码生成工具,但这是个人的事情:) (2认同)
  • 我已经使用了两者,而且一般来说我会选择LLBL ...主要是因为LLBL可以让你的工作/代码少得多.如果您可以将更多内容与数据库表相关联而不是抽象域对象,那么LLBL就适合您. (2认同)

Mic*_*dox 8

在确认这是一个有点老问题之前,我打了一个相当长的答案.那好吧.它仍然非常相关.

您已将列表缩小为.NET世界中ORM的两个最佳候选者.我对两者的经验都很有限,但我已经广泛阅读了两者的优点和缺点.他们真的以不同的方式满足不同的需求.

在即将推出的LLBLGen Pro 3.0中,Frans Bouma谈到了添加生成NHibernate映射的功能.所以,它甚至不一定是一个/或决定.

如果你想做"第一类"设计(而不是"数据库优先"设计),NHibernate现在几乎是你最好的选择(LLBLGen Pro和实体框架都不支持这种模式,虽然听起来像Entity Framework是改善它在下一版本中的支持).

NHibernate和LLBLGen Pro都很难与遗留数据库很好地协作,而这些数据库是你无法改变和不得不忍受的.这是他们的共同力量.他们都和Linq一起工作.它们都支持一些图形建模,尽管LLBLGen Pro在这方面要优越得多(NHibernate的ActiveWriter感觉就像Visual Studio中的LinqToSql设计器,但它并不像功能丰富的那样).

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

虽然NHibernate希望帮助您完成相当复杂的对象/关系映射方案(如类继承),但LLBLGen Pro实际上只是以非常快的方式将数据库公开为数据层和业务对象.

如果您可以购买LLBLGen Pro并且有时间,我会尝试两者,看看哪一个更符合您的需求.在任何情况下,学习两个ORM对你的简历都有好处.

所以,最后,我会说它是情境性的.NHibernate的成本及其缺乏严重缺陷在大多数情况下都是一个非常引人注目的案例.


Wie*_*sma 6

新版本的LLBLGen Pro(3.0)允许您为NHibernate生成代码,因此不必选择:).它还允许您将实体拆分为不同的域.

我仍然更喜欢LLBLGen pro运行时,LINQ解释器更完整,它有更好的字段更改跟踪.

不幸的是,新的LLBLGen Pro 3.0运行时没有太多新功能,因为创建者首先想要更多地关注工具而不是改进现有框架.