コード例 #1
0
 internal override void PostProcess(System.Data.Entity.Core.Query.InternalTrees.Node n, System.Data.Entity.Core.Query.InternalTrees.Rule rule)
 {
     if (rule == null)
     {
         return;
     }
     if (!this.m_projectionPrunningRequired && TransformationRules.RulesRequiringProjectionPruning.Contains(rule))
     {
         this.m_projectionPrunningRequired = true;
     }
     if (!this.m_reapplyNullabilityRules && TransformationRules.RulesRequiringNullabilityRulesToBeReapplied.Contains(rule))
     {
         this.m_reapplyNullabilityRules = true;
     }
     this.Command.RecomputeNodeInfo(n);
 }
コード例 #2
0
        /// <summary>
        ///     Callback function to invoke *after* rules are applied
        ///     Recomputes the node info, if this node has changed
        ///     If the rule is among the rules after which projection pruning may be beneficial,
        ///     m_projectionPrunningRequired is set to true.
        ///     If the rule is among the rules after which reapplying the nullability rules may be beneficial,
        ///     m_reapplyNullabilityRules is set to true.
        /// </summary>
        /// <param name="n"> </param>
        /// <param name="rule"> the rule that was applied </param>
        internal override void PostProcess(Node n, Rule rule)
        {
            if (rule != null)
            {
#if DEBUG
                appliedRules.Append(rule.MethodName);
                appliedRules.AppendLine();
#endif
                if (!m_projectionPrunningRequired
                    && TransformationRules.RulesRequiringProjectionPruning.Contains(rule))
                {
                    m_projectionPrunningRequired = true;
                }
                if (!m_reapplyNullabilityRules
                    && TransformationRules.RulesRequiringNullabilityRulesToBeReapplied.Contains(rule))
                {
                    m_reapplyNullabilityRules = true;
                }
                Command.RecomputeNodeInfo(n);
            }
        }