public virtual bool AddField(Net.Vpc.Upa.Field f) { if (inUseFields.Contains(f)) { return(false); } Net.Vpc.Upa.Formula formula = onPersist ? f.GetPersistFormula() : f.GetUpdateFormula(); Net.Vpc.Upa.Impl.Persistence.ValidationPass pass = null; int formulaPassInteger = onPersist ? f.GetPersistFormulaOrder() : f.GetUpdateFormulaOrder(); // passIndexes.add(formulaPassInteger); Net.Vpc.Upa.Impl.Persistence.ValidationPass[] passArray = Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <int?, Net.Vpc.Upa.Impl.Persistence.ValidationPass[]>(orderedPasses, formulaPassInteger); if (passArray == null) { orderedPasses[formulaPassInteger] = passArray = new Net.Vpc.Upa.Impl.Persistence.ValidationPass[((Net.Vpc.Upa.Impl.Persistence.ValidationPassType[])System.Enum.GetValues(typeof(Net.Vpc.Upa.Impl.Persistence.ValidationPassType))).Length]; } int pass1 = formulaPassInteger; if (formula is Net.Vpc.Upa.CustomUpdaterFormula) { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.MANUAL_VALIDATION)]; if (pass == null) { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.MANUAL_VALIDATION)] = new Net.Vpc.Upa.Impl.Persistence.ValidationPass(pass1, Net.Vpc.Upa.Impl.Persistence.ValidationPassType.MANUAL_VALIDATION); size++; } } else if (formula is Net.Vpc.Upa.CustomFormula) { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.CUSTOM_VALIDATION)]; if (pass == null) { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.CUSTOM_VALIDATION)] = new Net.Vpc.Upa.Impl.Persistence.ValidationPass(pass1, Net.Vpc.Upa.Impl.Persistence.ValidationPassType.CUSTOM_VALIDATION); size++; } } else if (!entityOperationManager.GetPersistenceStore().IsComplexSelectSupported()) { Net.Vpc.Upa.Expressions.Expression fe = GetFieldExpression(f, onPersist); Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression ce = (Net.Vpc.Upa.Impl.Uql.Compiledexpression.DefaultCompiledExpression)entity.Compile(fe); bool found = ce.FindFirstExpression <T>(Net.Vpc.Upa.Impl.Uql.Compiledfilters.CompiledExpressionHelper.QUERY_STATEMENT_FILTER) != default(T); if (found) { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.ITERATIVE_VALIDATION)]; if (pass == null) { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.ITERATIVE_VALIDATION)] = new Net.Vpc.Upa.Impl.Persistence.ValidationPass(pass1, Net.Vpc.Upa.Impl.Persistence.ValidationPassType.ITERATIVE_VALIDATION); size++; } } else { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.DEFAULT_VALIDATION)]; if (pass == null) { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.DEFAULT_VALIDATION)] = new Net.Vpc.Upa.Impl.Persistence.ValidationPass(pass1, Net.Vpc.Upa.Impl.Persistence.ValidationPassType.DEFAULT_VALIDATION); size++; } } } else { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.DEFAULT_VALIDATION)]; if (pass == null) { pass = passArray[((int)Net.Vpc.Upa.Impl.Persistence.ValidationPassType.DEFAULT_VALIDATION)] = new Net.Vpc.Upa.Impl.Persistence.ValidationPass(pass1, Net.Vpc.Upa.Impl.Persistence.ValidationPassType.DEFAULT_VALIDATION); size++; } } pass.GetFields().Add(f); inUseFields.Add(f); System.Collections.Generic.ICollection <Net.Vpc.Upa.PrimitiveField> dependency = (System.Collections.Generic.ICollection <Net.Vpc.Upa.PrimitiveField>)f.GetProperties().GetObject <T>(onPersist ? Net.Vpc.Upa.Impl.DefaultEntity.PERSIST_DEPENDENT_FIELDS : Net.Vpc.Upa.Impl.DefaultEntity.UPDATE_DEPENDENT_FIELDS); if (dependency != null) { foreach (Net.Vpc.Upa.PrimitiveField aDependency in dependency) { Net.Vpc.Upa.PrimitiveField df = (Net.Vpc.Upa.PrimitiveField)aDependency; //include only dependent fields from the same entity if (df.GetEntity().GetName().Equals(f.GetEntity().GetName())) { // add only formulas fields that are validateSupported if (onPersist) { Net.Vpc.Upa.Formula ff = df.GetPersistFormula(); if (ff != null && df.GetModifiers().Contains(Net.Vpc.Upa.FieldModifier.PERSIST_FORMULA)) { AddField(df); } } else { Net.Vpc.Upa.Formula ff = df.GetUpdateFormula(); if (ff != null && df.GetModifiers().Contains(Net.Vpc.Upa.FieldModifier.UPDATE_FORMULA)) { AddField(df); } } } } } return(true); }