Csharp/C#教程:NHibernate3查询与QueryOver分享


NHibernate3查询与QueryOver

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

IQueryOver query= session.QueryOver().Where(criteria); 

 IQueryable query= session.Query().Where(criteria); 

每个接口的实现。

 IQueryOver : IQueryOver, IQueryOver 

 IQueryable : IEnumerable, IQueryable, IEnumerable 

IQueryable实现IEnumerable,因此支持您期望的所有LINQ友好的东西。 我正在倾向于这个实现,但是想知道是否有人知道QueryOver的目的是什么,你无法用Query完成?

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

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

QueryOver是一种基于NHibernate的Criteria API构建的强类型查询技术。

您可以在此处和此处阅读更多信息。

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

值得一读的东西。

QueryOver语法是特定于NHibernate的,因此它有许多在LINQ中无法匹配的强大方法。

正如LeftyX所说,NH的LINQ实现并不完整,我有几个令人头痛的问题。 例如,最近我在使用二级缓存,Future值和LINQ的NH Spatial扩展时遇到了问题,所有这些都是由于不完整的实现或错误(并没有提到某些生成的SQL的性能,这有时非常糟糕)。

在所有这些情况下,我不得不使用QueryOver,并且在超越学习曲线之后,有恕我直言,比LINQ更好的语法。

但LINQ via Query也有优势; 就像是ORM不可知(可能利用更清洁的存储库架构),对于简单的查询来说绰绰有余。

上述就是C#学习教程:NHibernate3查询与QueryOver分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1014631.html

(0)
上一篇 2021年12月31日
下一篇 2021年12月31日

精彩推荐