我们在某些属性映射中使用自定义类型( IUserType )来加密数据库中的数据,我们使用侦听器( IPostUpdateEventListener,IPostDeleteEventListener,IPostInsertEventListener )来记录一些实体的变化,它在实体属性中的所有基础来决定是否需要日志。问题是没有加密就会记录加密属性。
使用 IEntityPersister 或其他来源,是否有办法识别女巫属性是否已加密(使用我们的自定义类型)?
private string GetValue(ISession session, object[] stateArray, int index, IEntityPersister persister)
{
try
{
return stateArray[index] == null || stateArray[index].ToString() == string.Empty
? "< No value >"
: stateArray[index].ToString();
}
catch (Exception e)
{
Trace.Write(string.Format("Error \"{0}[{1}]\": {2}", persister.EntityName, persister.PropertyTypes[index],
e));
return "< No value >";
}
}
...
public void OnPostInsert(PostInsertEvent @event)
{
var res = GetValue(session, @event.State, i, @event.Persister);
...
答案 0 :(得分:0)
Firo解决方案有效:
...
if (Persistor.PropertyTypes[i] is CustomType && (Persistor.PropertyTypes[i] as CustomType).UserType is MyUserType)
return "Encrypted";
...