Ty.*_*Ty. 27 c# nhibernate orm
我注意到有两种方法可以创建对nhibernate的友好的通用友好访问.
IQueryOver<T, T> query= session.QueryOver<T>().Where(criteria);
Run Code Online (Sandbox Code Playgroud)
和
IQueryable<T> query= session.Query<T>().Where(criteria);
Run Code Online (Sandbox Code Playgroud)
每个接口的实现.
IQueryOver<TRoot, TSubType> : IQueryOver<TRoot>, IQueryOver
Run Code Online (Sandbox Code Playgroud)
和
IQueryable<out T> : IEnumerable<T>, IQueryable, IEnumerable
Run Code Online (Sandbox Code Playgroud)
IQueryable实现IEnumerable,因此支持您期望的所有LINQ友好的东西.我正在倾向于这个实现,但是想知道是否有人知道QueryOver的目的是什么,你无法用Query完成?
Lef*_*tyX 30
QueryOver 结合了扩展方法和lambda表达式:
IList<Cat> cats =
session.QueryOver<Cat>()
.Where(c => c.Name == "Max")
.List();
Run Code Online (Sandbox Code Playgroud)
QueryOver 是一种基于NHibernate Criteria API构建的强类型查询技术.
据我所知,linq提供程序中的某些功能尚未实现.
我会用QueryOver.
它允许您编写优雅的代码,它是功能齐全的.
值得一读的东西.
pso*_*usa 15
QueryOver语法是特定于NHibernate的,因此它有许多在LINQ中无法匹配的强大方法.
正如LeftyX所说,NH的LINQ实现并不完整,我有几个令人头痛的问题.例如,最近我在使用第二级缓存,Future值和使用LINQ的NH Spatial扩展时遇到了问题,所有这些都是由于不完整的实现或错误(并没有提到某些生成的SQL的性能,这有时非常糟糕).
在所有这些情况下,我不得不使用QueryOver,并且在超越学习曲线之后,有恕我直言,比LINQ更好的语法.
但LINQ via Query也有优势; 喜欢与ORM无关(可能利用更清晰的存储库架构),对于简单的查询,这已经足够了.
| 归档时间: |
|
| 查看次数: |
17955 次 |
| 最近记录: |