Luk*_*uka 86 nhibernate queryover
我需要知道JoinQueryOver和JoinAlias之间的区别是什么,以及何时使用它们?
谢谢.
Vad*_*dim 106
在功能上他们做同样的事情,创建一个到另一个实体的连接.唯一的区别是他们的回归.JoinQueryOver返回一个新的QueryOver,当前实体是连接的实体,而JoinAlias返回原始QueryOver,它将当前实体作为原始根实体.
无论你使用哪一个都是个人品味的问题:(来自http://nhibernate.info/doc/nh/en/index.html#queryqueryover)
IQueryOver<Cat,Kitten> catQuery =
session.QueryOver<Cat>()
.JoinQueryOver<Kitten>(c => c.Kittens)
.Where(k => k.Name == "Tiddles");
Run Code Online (Sandbox Code Playgroud)
和
Cat catAlias = null;
Kitten kittenAlias = null;
IQueryOver<Cat,Cat> catQuery =
session.QueryOver<Cat>(() => catAlias)
.JoinAlias(() => catAlias.Kittens, () => kittenAlias)
.Where(() => kittenAlias.Name == "Tiddles");
Run Code Online (Sandbox Code Playgroud)
在功能上是相同的.请注意在第二个查询中如何明确引用kittenAlias.
Mic*_*aga 11
QueryOver系列 - 第2部分:Andrew Whitaker的基础和加入给出了一个非常好的解释:
摘要:
IQueryOver是一个通用的类型具有两个类型参数TRoot和TSubType.Select在TRoot其他QueryOver方法运行时运行TSubType.TRoot在构建查询TSubType时保持不变,但在使用时更改JoinQueryOverJoinQueryOver并JoinAlias为您的查询添加联接.JoinAlias不会改变TSubType,但JoinQueryOver确实如此.- 您可以在构建查询时使用别名来引用不属于
TRoot或的属性TSubType
| 归档时间: |
|
| 查看次数: |
34936 次 |
| 最近记录: |