2011-10-13 106 views
0

我遇到了NHibernate過濾器的問題。它工作得很好,直到我做一個左外連接到對象。左外連接NHibernate過濾器

例如,交易引用PurchaseItem,但PurchaseItem應用了CompanyId過濾器。

如果我想查詢與PurchaseItem的左連接處理,CompanyId篩選器應用於WHERE子句中,導致無法返回。

有沒有辦法在連接處應用過濾器而不是在where子句? 「CompanyId爲空或CompanyId =:companyId」

這是可以的,因爲CompanyId是SQLServer的沒有空,所以如果我們在做外,我們應該只得到NULL

回答

0

通過使用此過濾條件解決了這個問題加入。

0

我在尋找可空可選字段

這個確切的問題請注意您或會避免使用索引,因此它可能會比較慢。

更新:我想我找到了解決:

   // register filters 
       var filterDef = new FilterDefinition(
        "f_CurrentTenant", 
        "TenantId = :f_tenantId", 
        new Dictionary<string, IType> { { "f_tenantId", NHibernateUtil.Guid } }, 
        **false**); 
       config.AddFilterDefinition(filterDef); 

當您創建過濾器,你可以設置所謂的「useManyToOne」 =假的最後一個參數。這將告訴NH不要在連接上使用過濾器。

到目前爲止它似乎已經工作:D