protected override IPropertyType[] CreateTargetPropertyTypes(IBeanMetaData bmd, object bean, string[] propertyNames) { IDictionary modifiedPropertyNames = bmd.GetModifiedPropertyNames(bean); IList types = new ArrayList(); string timestampPropertyName = bmd.TimestampPropertyName; string versionNoPropertyName = bmd.VersionNoPropertyName; for (int i = 0; i < propertyNames.Length; ++i) { IPropertyType pt = bmd.GetPropertyType(propertyNames[i]); if (pt.IsPrimaryKey == false) { string propertyName = pt.PropertyName; if (propertyName.Equals(timestampPropertyName, StringComparison.CurrentCultureIgnoreCase) || propertyName.Equals(versionNoPropertyName, StringComparison.CurrentCultureIgnoreCase) || modifiedPropertyNames.Contains(propertyName)) { types.Add(pt); } } } IPropertyType[] propertyTypes = new IPropertyType[types.Count]; types.CopyTo(propertyTypes, 0); return(propertyTypes); }