我试图让 fNH 映射到自定义类型,但我遇到了困难。
我希望 fNH 通过自定义类型的接口分配其值。我还需要 nHibernate 来保留实体上的自定义类型的实例。它总是在访问属性时被实例化,不要覆盖实例,只需设置包装的值。
当我尝试下面的映射时,它会引发异常“在类 'Entities.User 中找不到属性 'Value' 的 getter”
想法?
fNH 映射:
Map(x =>((IBypassSecurity<string>)x.SecuredPinNumber).Value,"[PinNumber]");
域示例:
public class User
{
public SecureField<string> SecuredPinNumber {get;private set;}
}
public class SecureField<T> : IBypassSecurity<T>
{
public T Value { get; set; } // would apply security rules, for 'normal' use
T IBypassSecurity<T>.Value {get;set;} // gets/sets the value directy, no security.
}
// allows nHibernate to assign the value without any security checks
public interface IBypassSecurity<T>
{
T Value {get;set;}
}