2015-09-03 94 views
0

我們在某些屬性映射使用自定義類型(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

你應該使用'string.IsNullOrEmpty(stateArray [指數])' –

+0

它是對象 – maiconmm

+0

真正的數組!對不起:/ –

回答

0

Firo解決方案工作:

... 
if (Persistor.PropertyTypes[i] is CustomType && (Persistor.PropertyTypes[i] as CustomType).UserType is MyUserType) 
    return "Encrypted"; 
... 
相關問題