public virtual bool UpdateWithIncludeOrExcludeProperties(IHasRowVersion source, T destination, bool include, ICollection <string> propertyNames) { var destinationEntry = ctx.Entry(destination); destinationEntry.Property(e => e.RowVersion).OriginalValue = source.RowVersion; var sourceProperties = source.GetProperties(); foreach (var property in sourceProperties) { string propertyName = property.Name; bool contains = propertyNames.Contains(propertyName); if ((contains && include) || (!contains && !include)) { var sourceValue = property.GetPropertyValue(source); destination.SetPropertyValue(propertyName, sourceValue); } } return(true); }