Linq To Nhibernate 性能优化(入门级)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linq To Nhibernate 性能优化(入门级)相关的知识,希望对你有一定的参考价值。

      最近都是在用Nhibernate和数据库打交道,说实话的,我觉得Nhibernate比Ado.Net更好用,但是在对于一些复杂的查询Nhibernate还是比不上Ado.Net。废话不多说了,下面讲讲Linq To Nhibernate的性能优化。

     第一点:应该要分清楚当前代码是在数据库上执行,还是在内存中执行(或者什么时候应该在数据库上做,什么时候应该在内存做)


      我们在在做查询的时候,常见的使用方法

   技术分享

上面是使用了Iqueryable接口的,它会把数据先筛完了之后,再返回给我们

 

这个在数据库里呢,直接是把整个列表返回的,因为用了ToList方法。

    所以,在做查询的时候,什么操作要放到数据库层面做,什么操作要放到内存上做,这些都是我们要考虑的。平时这些都应该好好注意这些细节部分,就比如一个系统每年数据量只增加两千条,用多了两年这个系统就报废了,因为查询速度会随着数据量越来越大而越来越慢,而我们能做的就是把这些细节处理好。只要把序列返回的IEnumerable的话呢,这个就是linq to object,就会把数据库的数据,全部拿过来,放到内存中,在操作。所以能够让数据库多帮我们做一些操作,就尽量多做。一般情况下:一般都是在最后ToList的。

   第二点:Count和Any来判断集合中是否存在某个序列。

 用Count>0大于零来判断序列中是否含有某个元素对于 Array、List<T>或Collection<T>这些都不会存在问题。但是在某些情况下,就会有很大的问题。Any方法是通用的,所以大家最好用这个来判断。

 本博客只是把自己的拙见分享给大家,如有不对,欢迎指出。

  

 

以上是关于Linq To Nhibernate 性能优化(入门级)的主要内容,如果未能解决你的问题,请参考以下文章

用 LINQ to SQL 或 LINQ to EF 替换 NHibernate

对于不支持子查询的 NHibernate-to-LINQ 是不是有任何解决方法?

NHibernate 或 LINQ to SQL [关闭]

有利于启动; Linq to SQL 还是 Nhibernate?

Linq to NHibernate ThenFetch 多个属性

不支持 linq to nhibernate compareto