Sti*_*tig 3 nhibernate queryover
NHibernate.Linq返回IQueryable给我后期评估.这可以用QueryOver完成吗?
更新:
我将使用它来定义许多只使用子集的查询.因此,未来不是解决方案,它将全部执行它们.
我喜欢NHibernate.Linq中的IQueryable(IEnumerable)返回类型,如果从未使用过,它将永远不会执行查询.
首先,甚至QueryOver只是一组定义,以后转换为SQL语句.所以,直到你正在使用对a的引用
IQueryOver<Entity, Entity> ab = session.QueryOver<Entity>();
Run Code Online (Sandbox Code Playgroud)
而不是调用List<Entity>()......执行被推迟.这也是你如何使用Detached查询16.1.查询的结构
QueryOver<Cat> query = QueryOver.Of<Cat>()
.Where(c => c.Name == "Paddy");
Run Code Online (Sandbox Code Playgroud)
另一个强大的功能是Future.这表示如何在堆栈上放置少量查询的非常简单的方法,并且只有在需要第一个查询时...才会执行所有查询并作为批处理传递给DB Server .在这里阅读更多: NHibernate Futures
它们本质上是一种将查询执行推迟到以后日期的方法,此时NHibernate将获得有关应用程序应该执行的操作的更多信息,并相应地对其进行优化
最大的区别是它不能像IQueryable使用时那样返回QueryOver
编辑:扩展问题更新
虽然IQueryable<TEntiy>只能从a返回,session.Query<TEntity>()而不是在使用 QueryOver,ICriteria,HQL时 ...使用时无法达到相同的行为QueryOver.
| 归档时间: |
|
| 查看次数: |
2111 次 |
| 最近记录: |