7

我在令人羨慕的情況下不得不與遺留數據庫集成,幸運的是隻讀的目的,並選擇使用NHibernate。到目前爲止,一切都很好,但我有一個新的要求,讓我撓頭。使用鑑別器與流利NHibernate的多層次的繼承

在今天之前,我在表中有一列可以作爲鑑別器,但現在事實證明,在某些情況下,我需要有多個鑑別器列。這可能與NHibernate?

我已經研究過使用公式,它的工作,但現在我有問題,我需要排除'未知'的子類(還沒有映射)。例如,我有這樣的:

DiscriminateSubClassesOnColumn("") 
    .Formula("case ... when ... then ... when .. then ... else 'unknown' end"); 

我希望能夠過濾掉一切,這是「未知」 ......

編輯:我認爲,一個可能的解決方案是使用AlwaysSelectWithValue(),啓用它有什麼影響?我相信這與在nhibernate映射xml中的force是一樣的。

回答

2
public BaseClassMap() 
{ 
    Where("discriminatorColumn <> 'unknown'"); 
    // or 
    Where("discriminatorColumn = 'known1' or discriminatorColumn = 'known2'"); 
} 
+0

我試過這樣的事情,但它抱怨discriminatorColumn不是已知的列。 – jonnii

+1

* discriminatorColumn *必須是您在公式中區分的列。 NH並不在乎你指定哪一列,但它必須在數據庫中才有用 – Firo