2016-06-10 100 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]; 
相关问题