我需要知道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/

10-12 18:23