示例#1
0
        /// <summary>
        /// 当实体的某个属性变更时,自动向父级实体的指定属性汇总。
        /// </summary>
        /// <param name="entity">实体对象</param>
        /// <param name="changedPropertyArgs">实体属性变更时的参数</param>
        /// <param name="toTreeParent">
        /// 如果实体是树型对象,那么这个参数表明是否需要把值汇总到树中的父对象的同一个属性值上。
        /// </param>
        /// <param name="toParentProperty">
        /// 指示需要把值汇总到组合父对象的哪一个属性上。这个属性只支持直接父对象,不支持多级父对象。
        /// </param>
        /// <threadsafety static="true" instance="true"/>
        public static void AutoCollectAsChanged(
            Entity entity, ManagedPropertyChangedEventArgs changedPropertyArgs,
            bool toTreeParent = true,
            IManagedProperty toParentProperty = null
            )
        {
            if (toTreeParent)
            {
                if (entity.IsTreeParentLoaded && entity.TreeParent != null)
                {
                    CalculateCollectValue(entity.TreeParent, changedPropertyArgs.Property, changedPropertyArgs);
                    //如果已经向树型父汇总,则不向父对象汇总,直接返回
                    return;
                }
            }

            if (toParentProperty != null)
            {
                var parent = entity.FindParentEntity();
                if (parent != null)
                {
                    CalculateCollectValue(parent, toParentProperty, changedPropertyArgs);
                }
            }
        }