我正试图用ORM工具解决转移到和缩小到两个候选人。
nHibernate或LLBLGen Pro
请告诉我这两种工具的优缺点,特别是如果你在这两种工具上都有经验的话。我对任何其他工具并不感兴趣,但我需要一些提示,这样我就可以决定花时间学习哪种工具.
我已经知道,一个是免费的,一个不是,我也知道nHibernate可能需要一些学习.
非常感谢,理查德
发布于 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,这也会帮助你轻松地进入那里。
发布于 2009-07-11 17:39:49
主要的区别是LLBLGen是一个代码生成器,而NHibernate是一个“真正的”ORM库。
LLBLGen advantages
LLBLGen LLBLGen
NHibernate advantages
NHibernate NHibernate
当然,这只是我个人的观点.
发布于 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的成本和缺乏严重缺陷都是一个很有说服力的案例。
https://stackoverflow.com/questions/1114215
复制相似问题