我需要知道JoinQueryOver和JoinAlias有什么区别,以及何时使用它们?
最佳答案
从功能上讲,它们执行相同的操作,创建到另一个实体的联接。唯一的区别是它们返回的是什么。 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");
和
Cat catAlias = null;
Kitten kittenAlias = null;
IQueryOver<Cat,Cat> catQuery =
session.QueryOver<Cat>(() => catAlias)
.JoinAlias(() => catAlias.Kittens, () => kittenAlias)
.Where(() => kittenAlias.Name == "Tiddles");
在功能上是相同的。请注意在第二个查询中如何明确引用kittenAlias。
关于nhibernate - JoinQueryOver和JoinAlias有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5416560/