0
有沒有什麼辦法可以把自定義邏輯時,引用的實體沒有找到ID?NHibernate的自定義邏輯,如果沒有找到實體
問題:用戶字段存儲AD登錄和參考表用戶。該表僅包含活動用戶(這是客戶的政策)。當我們用非活動用戶打開記錄時,我們得到EntityNotFoundException。我們想返回一個由它的登錄填充的虛擬用戶對象。
這是可能的嗎?
有沒有什麼辦法可以把自定義邏輯時,引用的實體沒有找到ID?NHibernate的自定義邏輯,如果沒有找到實體
問題:用戶字段存儲AD登錄和參考表用戶。該表僅包含活動用戶(這是客戶的政策)。當我們用非活動用戶打開記錄時,我們得到EntityNotFoundException。我們想返回一個由它的登錄填充的虛擬用戶對象。
這是可能的嗎?
您可以使用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" />
但是,我們將能夠訪問的參考價值? –
@MichaelGurenkov你是什麼意思?如果Users表中沒有行,則也將不存在User對象,它將爲null。在這種情況下,您必須自己創建一個虛擬用戶對象。 – cremor
我需要用戶登錄才能創建虛擬用戶對象:-) –