Nhibernate与其他ORM的区别是什么?

除了它的开源和成熟之外,将nhibernate与其他.net ORM框架(如SubsonicADO.NET Entity Framework等)分开的区别因素是什么?

更好的说,我为什么要选择nhibernate而不是其他.netentity framework?

最大的原因可能是nHibernate支持持久性无知; 您的实体可以是普通的旧CLR对象(没有基类)。 它还支持Subsonic不支持的工作单元(自动跟踪和批处理更新)。 此外,Entity框架不支持隐式延迟加载(当您要访问Order.OrerItems时,您已调用Order.OrerItems.Load())。 它会迫使您考虑延迟加载,但也会因基础设施问题而污染您的商业逻辑。