public void SkipNotChangedProperties(Entity entity, IDictionary<string, object> existingRecord) { foreach (var property in entity .CreateProperties(getForeignCollection: false) .Where(x => x.IsKey == false) .WhereIsNotSkipped()) { if (existingRecord.ContainsKey(property.ColumnName.Undecorate())) { var oldValue = existingRecord[property.ColumnName.Undecorate()]; var equals = Equals(property.Value.Raw, oldValue); if (equals) property.Value.Raw = DataBehavior.Skip; } } }
public string UpdateChanges(Entity entity, IDictionary<string, object> existingRecord) { var updateProperties = entity.CreateProperties(getForeignCollection: false) .Where(x => x.IsKey == false) .WhereIsNotSkipped().ToList(); if (updateProperties.Any() == false) return "No changes"; var changeBuilder = new StringBuilder(); foreach (var property in updateProperties) { var columnName = property.ColumnName.Undecorate(); if (existingRecord.ContainsKey(columnName)) { var oldValue = existingRecord[columnName]; changeBuilder.AppendFormat("{0} ({1} => {2})", property.Name, oldValue.ToStringSafe(), property.Value.AsString); changeBuilder.AppendLine(); } } return changeBuilder.ToString(); }