.net - 复杂查询的ORM(尤其是NHibernate)性能

标签 .net performance nhibernate orm

我的公司正在从头开始重写现有的应用程序。除其他任务外,该应用程序还针对订单和发票数据执行复杂的SQL查询,以生成销售报告。查询是根据用户选择的条件动态构建的,因此,如果选择了许多条件,查询可能会非常复杂。目前,性能还不错,但还不是很好。

现在,对于新版本,我们想使用一个ORM,可能是NHibernate,因为它显然是唯一支持Oracle Lite的ORM(该应用程序使用Oracle还是Oracle Lite,这取决于它是在连接模式还是断开连接模式下运行)。但是我担心NHibernate生成的查询的性能。之前我曾与其他ORM(SQL的Linq, Entity Framework )一起工作过,但是查询非常简单,因此没有性能问题。

因此,在决定使用ORM还是使用普通SQL之前,我想知道这些工具如何处理外部联接,子查询等情况。您认为ORM(尤其是NHibernate)是是否适合在上述报告方案中使用?我应该担心复杂查询的性能吗?

任何反馈将不胜感激

最佳答案

参见this chart。目前没有DataObjects.Net,但与EF和NHibernate相比的结果显示为here

EF的LINQ测试代码为here;可以在同一文件夹中找到其他工具的版本。所有这些.cs文件都是由a single T4 template生成的,因此测试是完全相同的。那里使用的模型是罗斯文。

几个链接:

  • LINQ test description
  • FAQs
  • 关于.net - 复杂查询的ORM(尤其是NHibernate)性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1501312/

    相关文章:

    .net - 每个 Mono 组件是用哪种语言开发的?

    iphone - 缓存 UIView 对象作为提高性能的一种方式

    nhibernate - 如何在 NHibernate 中映射没有标识列的 View ?

    NHibernate 因魔法字符串而崩溃

    c# - DotNetZip 无法压缩大量条目

    android - 如何将作为 json 字符串接收到的 .net DateTime 解析为 java 的 Date 对象

    c# - 我应该做哪些事情来创建高性能且健壮的反射缓存?

    performance - 全文索引缓慢。寻找替代品

    sql - 如何获取多个查询的 GET_QUERY_OPERATOR_STATS() ?

    c# - MVC 3,在哪里提交工作单元?