如果未找到实体,则为NHibernate的自定义逻辑

时间:2013-07-03 07:55:41

标签: nhibernate

当id找不到引用的实体时,有没有办法放置自定义逻辑?

问题:用户字段存储AD登录和参考表用户。该表仅包含活动用户(这是客户的策略)。当我们用非活动用户打开一条记录时,我们得到了EntityNotFoundException。我们想要返回一个由其登录填充的虚拟User对象。

有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用not-found="ignore"将引用映射到用户。然后,缺失的用户将在您可以自己处理的关联属性中显示为null。

类别:

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" />