那里有NHibernate杀手吗?

时间:2010-01-21 20:02:17

标签: nhibernate orm domain-driven-design

这可能是一个很长的镜头。

在.NET世界中,有没有人发现具有NHibernate灵活性的ORM(商业或开放)支持域驱动设计并具有良好的Linq支持? Linq to sql已经死了,Entity Framework还没有很好地支持POCO的,懒惰的加载或对象的第一次开发,而且LLBLGen之类的旧版本似乎都没有。

任何人在ORM市场中发现任何新的和令人兴奋的东西?

谢谢!

5 个答案:

答案 0 :(得分:4)

请参阅ORMBattle.NET - 它不会完全回答您的问题(顺便说一句,我几乎不承认这是可能的),但有一些关于LINQ支持质量的信息。

注意(或免责声明):我是创建ORMBattle.NET以及DataObjects.Net作者之一的人之一。

答案 1 :(得分:2)

您在谈论哪个版本的.NET Framework? 3.5? 4.0

有很多ORM,其中一些商业实际上可能满足您的需求(或者正在开发满足您需求的新版本)。从商业角度对NHibernate和Entity Framework进行竞争是相当艰巨的。微软使编写Linq提供程序变得比实际困难得多,这就是为什么很少有ORM拥有它的原因。编写支持多个数据库供应商的面向域驱动设计的ORM也是一个非常陡峭的山峰。

NHibernate现在肯定拥有所有的动力,但这并不意味着它是无敌的。很难与免费游戏竞争开源软件,具有多年的领先优势,即使对于拥有微软财务资源的公司也是如此。

我想你可能需要耐心等待。 NHibernate的Linq提供商正在改进,其他ORM供应商也在努力改进他们的产品。在接下来的两年左右的时间里,事情可能会发生重大变化。

答案 2 :(得分:1)

不,我不知道。因为NHibernate很受欢迎并且非常擅长它,并且EF可能会占用大部分其余部分(特别是那些不想偏离微软提供的框架的开发人员),新玩家的入门门槛非常高高。另外一个ORM需要添加一些重要的东西,超出NHibernate目前提供的东西,以获得任何合理的兴趣水平。

如果有一个开源项目希望在ORM中提供更好的Linq支持,我认为它将为NHibernate Linq做出更大的成功,而不是试图从头开始构建自己的框架。

答案 3 :(得分:1)

我不会称之为“NHibernate杀手”,但SubSonic效果很好。它使用简单,允许您在使用Active Record模式和Repository模式之间进行选择。它支持POCO,允许您使用对象优先开发,并且设置延迟加载非常容易。

答案 4 :(得分:0)

CQRS可被视为NHibernate的杀手。基本前提是您的域对象不用于支持您的读取模型和应用程序查询。因此,您可以开始使用更像文档存储的东西来保存聚合甚至使用事件源。要更新您的阅读模型,您可以让它听取您的聚合发布的事件,以便它可以相应地更新自己。使用这种架构风格,我们已经能够消除对NHibernate的依赖。现在,如果我们决定使用RDBMS,那是因为数据库的优势而不是默认选择。