真的很快问题..
Linq2NHibernate是否始终创建左连接以检索关系?有没有办法让我可以得到一个内在的?
提前谢谢。
菲利普
答案 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>
)时无法指定连接类型