private void MapFieldAttributesToEntity(Entity entity) { foreach (var property in GetProperties(this)) { var attribute = EntityFieldAttribute(property); var value = property.GetValue(this); var valueChanged = ChangedPropertyNames.Contains(property.Name); if (attribute == null || !valueChanged) { continue; } if (attribute.Type == typeof(EntityReference) && value != null) { entity[attribute.Name] = new EntityReference(attribute.Reference, (Guid)value); } else if (attribute.Type == typeof(OptionSetValue) && value != null) { entity[attribute.Name] = new OptionSetValue((int)value); } else { entity[attribute.Name] = value; } } }
protected void NotifyPropertyChanged([CallerMemberName] string propertyName = "") { var excluded = _propertyNamesExcludedFromChangeTracking.Any(p => p == propertyName); if (_changeTrackingEnabled && !excluded) { ChangedPropertyNames.Add(propertyName); } }
internal void EndUpdate() { if (--UpdateCount == 0) { foreach (var propertyName in ChangedPropertyNames) { OnPropertyChanged(propertyName); } ChangedPropertyNames.Clear(); } }