private System.Collections.Generic.IList <object> GetKeysToUpdate() { if (keysToUpdate == null) { keysToUpdate = entity.CreateQueryBuilder().ByExpression(expr).OrderBy(entity.GetUpdateFormulasOrder()).GetIdList <K>(); if ((keysToUpdate.Count == 0)) { nothingToValidate = true; } } return(keysToUpdate); }
public override void OnPreUpdate(Net.Vpc.Upa.Callbacks.UpdateEvent @event) /* throws Net.Vpc.Upa.Exceptions.UPAException */ { Net.Vpc.Upa.Persistence.EntityExecutionContext executionContext = @event.GetContext(); System.Collections.Generic.IList <Net.Vpc.Upa.Field> updateTreeFields = GetUpdateTreeFields(); Net.Vpc.Upa.Record updates = @event.GetUpdatesRecord(); if (!updates.IsSet(updateTreeFields[0].GetName())) { return; } object val = updates.GetObject <T>(updateTreeFields[0].GetName()); if (val is Net.Vpc.Upa.Expressions.Literal) { val = ((Net.Vpc.Upa.Expressions.Literal)val).GetValue(); } else if (val is Net.Vpc.Upa.Expressions.Expression) { // Log.bug("1232123"); return; } if (val != null) { object parentId = relation.ExtractId(updates); if (parentId != null) { Net.Vpc.Upa.Entity entity = @event.GetEntity(); string k = "recurse"; if (!executionContext.IsSet(k)) { System.Collections.Generic.IList <object> idList = entity.CreateQueryBuilder().ByExpression(@event.GetFilterExpression()).OrderBy(entity.GetUpdateFormulasOrder()).GetIdList <K>(); executionContext.SetObject(k, idList); } System.Collections.Generic.IList <object> r = (System.Collections.Generic.IList <object>)executionContext.GetObject <T>("recurse"); foreach (object aR in r) { if (support.IsEqualOrIsParent(aR, parentId)) { throw new Net.Vpc.Upa.Exceptions.UPAException("RedundancyProblem"); } } } } }