EF4与NHibernate相比如何?

有没有更好的?我听说过CodeFirst扩展,但是它已准备好进入黄金时段。请分享您在开发,任何性能开销等方面的经验。     
已邀请:
我认为这是一个及时的问题,因为我想知道完全相同的事情。我正在尝试创建一个严肃的电子商务模型,我试图让我的POCO不受持久性问题的影响,并试图保持领域驱动设计的真实性。到目前为止,我非常谨慎,而且我是否应该跳到NHibernate。阻止我这样做的唯一原因是我认为微软会(并且很快)改进。 到目前为止一些最大的问题: 无法精确控制对象实现。 EF在您的POCO上调用零参数构造函数,这是您无法更改的行为。 没有枚举支持。社区一直在尖叫 - 尖叫! - 为此,它没有发生。解决方法非常糟糕,污染了您的域模型。 尝试控制数据库中的列名和关系时出现奇怪的映射错误。我能想到的主要是复合键和多对多关系。这些可以解决,我认为这些将通过发布时间来修复,但它们仍然令人沮丧。 糟糕的SQL。我也做DBA工作,EF生成的SQL(有或没有Code-First)是残酷的。 这只是冰山一角:我只是开始学习EF4而且我遇到了可怕的障碍。当我想到更多原因时,我会在这里添加它们。我还在苦苦挣扎。 (我想知道社区是否会再给它一个“不信任”的投票。) 更多: 要添加到“奇怪的映射错误”问题:如果列参与自引用关系(例如,如果您有层次结构),则无法控制列的名称。我认为这将在最终版本中修复。 缺乏批处理,导致数据库多次往返。例如,如何从集合中删除一堆项?将所有实体加载到内存中并一次删除一个。较小的抱怨是插入参与继承关系的表时的数据库命中数。 没有智能的方式来处理模型的变化。如果需要更改架构,EF Code-First喜欢完全删除整个数据库。 几乎没有可扩展性。您可以直接指望EF4允许您订阅的事件数量(而Code-First不提供更多)。     
至于我 - 我更喜欢EF,但有一些增强功能。 EF基本上为您提供以下优势: 视觉模型编辑器 数据库/模型更新向导(而不是手动XML更改 - 对我来说可怕) 此外,我正在使用基于EF和L2S(LinqConnect)的第三方商业工具,它为我提供了以下功能: 地理支持 优化的SQL生成 产品绝对集成到Visual Studio中 智能数据库更新向导(同步模式)     

要回复问题请先登录注册