NHibernate3 查询与 QueryOver [英] NHibernate3 Query vs QueryOver

查看:21
本文介绍了NHibernate3 查询与 QueryOver的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我注意到有两种方法可以创建对 nhibernate 的通用友好访问.

I noticed there are two ways to create nice generic friendly access to nhibernate.

IQueryOver<T, T> query= session.QueryOver<T>().Where(criteria);

IQueryable<T> query= session.Query<T>().Where(criteria);

各个接口的实现.

IQueryOver<TRoot, TSubType> : IQueryOver<TRoot>, IQueryOver

IQueryable<out T> : IEnumerable<T>, IQueryable, IEnumerable

IQueryable 实现了 IEnumerable,因此支持您期望的所有 LINQ 友好的东西.我倾向于这种实现,但想知道是否有人知道 QueryOver 的目的是什么,而您无法使用 Query 来完成?

IQueryable implements IEnumerable, thus supports all the LINQ friendly things you would expect. I am tending towards this implementation, but was wondering if anyone knew what the purpose of QueryOver was that you cannot accomplish with Query?

推荐答案

QueryOver 结合了扩展方法和 lambda 表达式:

QueryOver combines extension methods and lambda expressions:

IList<Cat> cats =
    session.QueryOver<Cat>()
        .Where(c => c.Name == "Max")
        .List();

QueryOver 是一种建立在 NHibernate 的 Criteria API 之上的强类型查询技术.

QueryOver is a strongly-typed querying technology built on top of NHibernate’s Criteria API.

您可以在这里阅读更多信息这里.

据我所知,linq 提供程序中的某些功能尚未实现.
我会使用 QueryOver.
它允许您编写优雅的代码并且功能齐全.

As far as I know some features in the linq provider are not implemented yet.
I would use QueryOver.
It allows you to write elegant code and it is fully featured.

值得阅读.

这篇关于NHibernate3 查询与 QueryOver的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆