我需要收集一些关于现有ORM解决方案的信息。请随意讨论任何编程语言。
你能谈谈你使用过的最好的ORM框架,以及为什么它比其他框架更好吗?
我需要收集一些关于现有ORM解决方案的信息。请随意讨论任何编程语言。
你能谈谈你使用过的最好的ORM框架,以及为什么它比其他框架更好吗?
我曾使用过 NHibernate 和 Entity Framework。
当前稳定版本的 Entity Framework 还很不成熟。它太难或者说不可能完成一些常见的任务。测试代码也很困难,因为你无法真正地将实体与数据访问类分开。但是它能够完美地集成到 Visual Studio IDE 中。设置非常容易,从数据库更新所有模型只需几秒钟。即将推出的 EF (4.0)将解决其中一些问题。
NHibernate 很强大。它支持 plain old CLR objects ,因此你可以处理简单的实体。配置提供了非常详细的控制。框架功能令人满意,拥有庞大和活跃的社区以及良好的文档。设置和更新实体有点困难,因为你必须使用生成器来查找你的数据库并生成实体和 XML 文件。可能会很难找到完全符合你需要的生成器或模板。但是一旦你设置好所有东西,你就会喜欢它。
我过去几个月一直在研究Telerik Open Access,总的来说这个ORM的使用非常麻烦。它宣传具有广泛的linq支持,但实际上,你通常期望的许多linq功能在服务器端不起作用,并在客户端执行。我还在使用where子句中遇到了多个条件的问题,请查看我的上一个问题。以下是我发现的一些问题:
Rohan
LINQ2SQL很好,EF很有意义,但非常复杂且面向SQL Server。NHibernate很特别,而Telerik OpenAccess(完全.NET / Visual Studio)具有广泛的功能和专业支持。
由于我了解该产品,因此可以评论Rohan的担忧:
请查看Telerik网站以找到满意的客户,并随时使用telerik论坛和支持资源提出任何问题。
-Peter
使用ORM有多种可能性,一切取决于你想要什么。
作为一个真正的ORM映射器,我强烈推荐NHibernate和Fluent NH映射。你需要进行大量的研究来构建一个好的架构,但是一旦完成,就没有任何阻碍了。只需最小的妥协,你就可以获得真正的灵活性。
EF6x(核心版本不够成熟)被称为ORM,但它生成的更接近于数据访问层(DAL)。有些事情你不能用EF6有效地完成。尽管如此,这仍然是我用于读模型的最喜欢的工具,同时我会将其与NHibernate结合使用(其中NH我用于DDD/写模型)。
现在来谈谈性能 - 总是有利有弊。如果你深入研究ORM架构(请参阅我的文章:避免ORM的坏习惯),那么你会直观地发现如何使它更快。这是我另一篇关于如何使EF6x 5x 更快(至少对于读取情况)的文章:EF6.x 5x faster
我是OpenAccess ORM的新手,我们正在使用两个产品:Reporting和OpenAccess。我认为有些功能被人们忽略了。
使用它更容易,论坛也非常有帮助。