internal bool IsAtomic(InitializationContext context) { if (!context.EvaluateAtomicityCondition(!m_naturalGroup && !IsDetail, m_owner, AtomicityReason.NonNaturalGroup) && !context.EvaluateAtomicityCondition(m_domainScope != null, m_owner, AtomicityReason.DomainScope) && !context.EvaluateAtomicityCondition(m_parent != null, m_owner, AtomicityReason.RecursiveParent)) { return(context.EvaluateAtomicityCondition(HasAggregatesForAtomicityCheck(), m_owner, AtomicityReason.Aggregates)); } return(true); }
internal void DetermineDecomposability(InitializationContext context) { if (context.EvaluateAtomicityCondition(m_dataSetCore.Filters != null, this, AtomicityReason.Filters) || context.EvaluateAtomicityCondition(HasAggregatesForAtomicityCheck(), this, AtomicityReason.Aggregates) || context.EvaluateAtomicityCondition(HasLookups, this, AtomicityReason.Lookups) || context.EvaluateAtomicityCondition(m_dataRegions.Count > 1, this, AtomicityReason.PeerChildScopes)) { m_allowIncrementalProcessing = false; } }
public void Initialize(int parentRowID, int parentColumnID, int rowindex, int colIndex, InitializationContext context) { bool flag = this.IsDataRegionBodyCell && context.IsDataRegionCellScope; if (flag) { context.RegisterIndividualCellScope(this); this.m_inDynamicRowAndColumnContext = context.IsDataRegionCellScope; if (this.DataScopeInfo.JoinInfo != null && this.DataScopeInfo.JoinInfo is IntersectJoinInfo) { this.m_dataRegionDef.IsMatrixIDC = true; } } else { context.RegisterNonScopeCell(this); } this.m_textboxesInScope = context.GetCurrentReferencableTextboxes(); this.m_variablesInScope = context.GetCurrentReferencableVariables(); this.m_parentRowID = parentRowID; this.m_parentColumnID = parentColumnID; context.SetIndexInCollection(this); this.StartExprHost(context); if (this.m_dataScopeInfo != null) { this.m_dataScopeInfo.Initialize(context, this); } this.InternalInitialize(parentRowID, parentColumnID, rowindex, colIndex, context); this.EndExprHost(context); this.m_dataScopeInfo.ValidateScopeRulesForIdc(context, this); if (context.EvaluateAtomicityCondition(this.HasAggregatesForAtomicityCheck(), this, AtomicityReason.Aggregates) || context.EvaluateAtomicityCondition(context.HasMultiplePeerChildScopes(this), this, AtomicityReason.PeerChildScopes)) { context.FoundAtomicScope(this); } else { this.m_dataScopeInfo.IsDecomposable = true; } if (flag) { context.UnRegisterIndividualCellScope(this); } else { context.UnRegisterNonScopeCell(this); } }