using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHibernate; using Tanshu.Accounts.Entities; namespace Tanshu.Accounts.Repository { public class VoucherDirty : EmptyInterceptor { public override int[] FindDirty(object entity, object id, object[] currentState, object[] previousState, string[] propertyNames, NHibernate.Type.IType[] types) { var result = new List(); // we do not care about other entities here if (!(entity is Voucher)) { return null; } var length = propertyNames.Length; // iterate all properties for (var i = 0; i < length; i++) { bool areEqual; if (currentState[i] == null) areEqual = previousState[i] == null; else areEqual = currentState[i].Equals(previousState[i]); var isResettingProperty = propertyNames[i] == "LastEditDate"; if (!areEqual || isResettingProperty) { result.Add(i); // the index of "Code" property will be added always } } return result.ToArray(); } } }