This question already has answers here:
Tradeoffs using NHibernate 3.0 QueryOver or LINQ provider

(4个答案)


4年前关闭。




我注意到有两种方法可以创建对nhibernate的良好通用友好访问。
IQueryOver<T, T> query= session.QueryOver<T>().Where(criteria);


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

每个接口(interface)的实现。
IQueryOver<TRoot, TSubType> : IQueryOver<TRoot>, IQueryOver


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

IQueryable实现IEnumerable,因此支持您期望的所有LINQ友好特性。我正在趋向于此实现,但是想知道是否有人知道QueryOver的目的是无法使用Query完成?

最佳答案

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

IList<Cat> cats =
    session.QueryOver<Cat>()
        .Where(c => c.Name == "Max")
        .List();
QueryOver是一种基于NHibernate的Criteria API的强类型查询技术。

您可以阅读更多信息herehere

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

值得reading的东西。

关于c# - NHibernate3 Query vs QueryOver ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5328565/

10-11 15:20