public virtual void SetPropertyModified([NotNull] IProperty property, bool isModified) { Check.NotNull(property, "property"); // TODO: Restore original value to reject changes when isModified is false _stateData.SetPropertyModified(property.Index, isModified); // Don't change entity state if it is Added or Deleted var currentState = _stateData.EntityState; if (isModified && currentState == EntityState.Unchanged) { var notifier = _configuration.Services.StateEntryNotifier; notifier.StateChanging(this, EntityState.Modified); _stateData.EntityState = EntityState.Modified; notifier.StateChanged(this, currentState); } else if (!isModified && !_stateData.AnyPropertiesModified()) { var notifier = _configuration.Services.StateEntryNotifier; notifier.StateChanging(this, EntityState.Unchanged); _stateData.EntityState = EntityState.Unchanged; notifier.StateChanged(this, currentState); } }