public ArrayList CompareAndUpdateValues() { if (fieldValues != null) { ArrayList diffs = new ArrayList(); ArrayList newValues = new ArrayList(); FieldDescriptorCollection fields = ParentTableDescriptor.Fields; for (int n = 0; n < fieldValues.Count; n++) { object value = base.GetValue(fields[n]); bool isEqual = Object.ReferenceEquals(fieldValues[n], value); if (!isEqual && fieldValues[n] != null && value != null) { isEqual |= fieldValues[n].Equals(value); } if (!isEqual) { diffs.Add(n); } newValues.Add(value); } fieldValues = newValues; return(diffs); } return(null); }
public FieldDescriptor GetField(CustomEntityDescriptor descriptor, string alias, FieldDataType fieldType) { string name = "IBOL_" + alias; FieldDescriptorCollection fieldDescriptors = this.ActFramework.Fields.GetFields(descriptor); //foreach (FieldDescriptor des in fieldDescriptors) //{ // Logging.Log("GetFieldDescriptor", des.Name + ", " + des.ColumnName + ", " + des.Alias + ", " + des.EntityName + ", " + des.TableName); //} FieldDescriptor field = fieldDescriptors.Find(name); if (field != null) { return(field); } field = new FieldDescriptor(name, alias, descriptor, fieldType); // name will be changed, the alias not this.ActFramework.Database.LockDatabase(DatabaseLockReason.SchemaChanges); try { this.ActFramework.Fields.Save(field); } finally { this.ActFramework.Database.UnlockDatabase(); } return(field); }