2011-08-20 48 views
1

我有一个NHibernate项目中的几个一对多映射,配置为使用Sets什么影响NHibernate使用外部连接而不是内部连接?

没有做项目,而max_fetch_depth设置为2,NHibernate似乎总是使用外部连接而不是内部连接。

这是有原因吗?映射结构相当于:

Category 
    +- Document.Category 
    +- Document.User 

只是一个普通的一对多设置。

回答

6

如果Nhibernate做了内部连接,那意味着没有文档的Categorys将不会被获取。
这就是为什么nHibernate总是使用外连接,除非你特别查询。

+0

有意义,尽管这大概意味着NHibernate会带回比它需要更多的行,除非您自己编写所有集合查询? –

+1

不,你为什么这么说?你不需要不包含任何'Document's的'Category'行吗? –

+0

@sJohnny我可以明白为什么它现在做,因为它适合大多数场景。尽管如此,这确实创造了一个巨大的记录。但我想你打算通过自定义条件查询来处理这些问题 –