Linq2NHibernate - 只剩下连接?

时间:2010-10-20 21:40:12

标签: nhibernate linq-to-nhibernate

真的很快问题..

Linq2NHibernate是否始终创建左连接以检索关系?有没有办法让我可以得到一个内在的?

提前谢谢。

菲利普

1 个答案:

答案 0 :(得分:1)

据我所知。

对于任何非一对一的关系,NHibernate假设关系可能有0到多个结果,因此使用左连接。

我不知道Linq2NHibernate,但在使用QueryOver API的NH3中,您可以指定连接类型。

例如,为产品提供类别。如果你写了:

var result = Session.QueryOver<Product>()
                    .Fetch(x => x.Category).Eager
                    .List();

这将导致左连接,如果要指定内连接,则可以编写相同的查询:

var result = Session.QueryOver<Product>()
                    .JoinQueryOver(x => x.Category, JoinType.InnerJoin)
                    .List();

这将导致内部加入。

据我所知,在使用LINQ提供程序(NH3中为Query<T>)时无法指定连接类型