NHibernate过滤器左外连接
我遇到了一个NHibernate过滤器的问题。 它工作得很好,直到我做一个左外连接到对象。
例如,Deal引用PurchaseItem,但PurchaseItem应用了CompanyId过滤器。
如果我想要查询与PurchaseItem的左连接的处理,则CompanyId筛选器应用于WHERE子句中,从而不会返回任何内容。
有没有办法在连接而不是在where子句处应用过滤器?
通过使用此过滤条件解决此问题:“CompanyId是NULL或CompanyId =:companyId”
这是可以的,因为在SQLServer中,CompanyId不是null,因此如果我们正在进行外连接,我们只应该得到NULL。
我正在寻找这个可空的可选字段的确切问题
注意你的OR会避免使用索引,因此速度可能会变慢。
更新:我想我找到了修复:
// register filters
var filterDef = new FilterDefinition(
"f_CurrentTenant",
"TenantId = :f_tenantId",
new Dictionary<string, IType> { { "f_tenantId", NHibernateUtil.Guid } },
**false**);
config.AddFilterDefinition(filterDef);
创建过滤器时,可以设置名为“useManyToOne”= false的最后一个参数。 这将告诉NH不要在连接上使用过滤器。
到目前为止,它似乎有效:D
链接地址: http://www.djcxy.com/p/60991.html