2013-07-03 26 views
0

有沒有什麼辦法可以把自定義邏輯時,引用的實體沒有找到ID?NHibernate的自定義邏輯,如果沒有找到實體

問題:用戶字段存儲AD登錄和參考表用戶。該表僅包含活動用戶(這是客戶的政策)。當我們用非活動用戶打開記​​錄時,我們得到EntityNotFoundException。我們想返回一個由它的登錄填充的虛擬用戶對象。

這是可能的嗎?

回答

0

您可以使用not-found="ignore"將引用映射到用戶。缺失的用戶將在關聯屬性中顯示爲空,您可以處理自己。

類:

public class SomeClass 
{ 
    private string _userLogin; 
    private User _user; 

    public virtual User User 
    { 
     get 
     { 
      if (_user == null && !String.IsNullOrEmpty(_userLogin)) 
      { 
       return new User(_userLogin); // Dummy User 
      } 
      return _user; 
     } 
     set 
     { 
      _user = value; 
     } 
    } 
} 

映射:

<property name="_userLogin" column="user_login" access="field" insert="false" update="false" /> 
<many-to-one name="_user" column="user_login" access="field" not-found="ignore" /> 
+0

但是,我們將能夠訪問的參考價值? –

+0

@MichaelGurenkov你是什麼意思?如果Users表中沒有行,則也將不存在User對象,它將爲null。在這種情況下,您必須自己創建一個虛擬用戶對象。 – cremor

+0

我需要用戶登錄才能創建虛擬用戶對象:-) –