public override Dictionary <string, object> ToUpdate(IMemoryCache memoryCache, out BaseModel updatedElement) { Dictionary <string, object> changes = new Dictionary <string, object>(); PropertyKey refInCache = null; if (Id != string.Empty) { refInCache = CacheHelper.GetPropertyKeyFromCache(memoryCache, Id); if (refInCache != null) { if (!Name.Equals(refInCache.Name)) { changes.Add("Name", Name); } if (!PrimitiveDataType.Equals(refInCache.PrimitiveDataType)) { changes.Add("PrimitiveDataType", this.PrimitiveDataType.ToString()); } if (!Category.Equals(refInCache.Category)) { changes.Add("Category", Category); } if (!Description.Equals(refInCache.Description)) { changes.Add("Description", Description); } if (!SpaceId.Equals(refInCache.SpaceId)) { changes.Add("SpaceId", SpaceId); } if (!Scope.Equals(refInCache.Scope)) { changes.Add("Scope", Scope.ToString()); } if (!ValidationData.Equals(refInCache.ValidationData)) { changes.Add("ValidationData", ValidationData); } if (!Min.Equals(refInCache.Min)) { changes.Add("Min", Min); } if (!Max.Equals(refInCache.Max)) { changes.Add("Max", Max); } } else { refInCache = this; if (Name != null) { changes.Add("Name", Name); } changes.Add("PrimitiveDataType", this.PrimitiveDataType.ToString()); if (Category != null) { changes.Add("Category", Category); } if (Description != null) { changes.Add("Description", Description); } if (SpaceId != null) { changes.Add("SpaceId", SpaceId); } changes.Add("Scope", Scope.ToString()); if (ValidationData != null) { changes.Add("ValidationData", ValidationData); } if (Min != null) { changes.Add("Min", Min); } if (Max != null) { changes.Add("Max", Max); } } } updatedElement = refInCache; return(changes); }