2016-06-10 92 views
0

我有這個代碼在哪裏比較oldState對象的值由currentState在fluent inhibiternate中,我想要的是記錄已更改的屬性及其值,在這裏,我得到了新的和舊的價值,但我也想獲得財產的名稱。是否有可能通過它的值獲取屬性c#

如果我反映@event.Entity我可以得到所有的屬性和它們的值,所以有什麼辦法通過它的值獲取屬性名稱。

public void OnPostUpdate(NHibernate.Event.PostUpdateEvent @event) 
{ 
    var entityToAudit = @event.Entity as IAuditable; 
    string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AuditLog.txt"); 
    using (StreamWriter sw = File.AppendText(path)) 
    { 
     for (int i = 0; i < @event.OldState.Length; i++) 
     { 
      if (@event.OldState[i] != null) 
      { 
       if ([email protected][i].Equals(@event.State[i])) 
       { 
        sw.WriteLine("the value has ben changed from " + @event.OldState[i] + " to " + @event.State[i]); 
       } 
      } 
      else 
      { 
       if (@event.State[i] != null) 
       { 
        sw.WriteLine("the value has ben changed from being empty to " + @event.State[i]); 
       } 
      } 
     } 
    } 
} 

回答

0

您不需要使用System.ReflectionPostUpdateEvent已包含您需要的訂單中的所有屬性名稱:

var propertyName = e.Persister.PropertyNames[i]; 
相關問題