示例#1
0
        protected override void OnIDChanged()
        {
            base.OnIDChanged();

            this._AllChildrenRelations = null;
            this._AllChildren          = null;
            this._CurrentlChildren     = null;
        }
        private void PrepareRelationObject()
        {
            AUCommon.DoDbAction(() =>
            {
                this.oldRelationToSchema = SchemaRelationObjectAdapter.Instance.Load(((AdminUnit)this.Data).AUSchemaID, this.Data.ID);
                this.oldRelationToUnit = SchemaRelationObjectAdapter.Instance.LoadByObjectID(this.Data.ID).Where(m => m.Status == SchemaObjectStatus.Normal && m.ParentSchemaType == AUCommon.SchemaAdminUnit).FirstOrDefault();

                if (this.Data.Status == SchemaObjectStatus.Normal) //添加操作
                {
                    this.actualParent = inputParent != null ? SchemaObjectAdapter.Instance.Load(this.inputParent.ID) : this.schema;

					if (this.actualParent.ID == this.Data.ID)
						throw new AUObjectValidationException("管理单元的父管理单元不能是其自身。");

                    if (this.actualParent == null || this.actualParent.Status != SchemaObjectStatus.Normal)
                        throw new AUObjectValidationException("指定的父管理单元在系统中不存在或已删除");

                    if (this.oldRelationToSchema != null && this.oldRelationToSchema.Status == SchemaObjectStatus.Normal && this.oldRelationToUnit != null && this.oldRelationToUnit.Status == SchemaObjectStatus.Normal)
                        throw new AUObjectValidationException("关系错误。此管理单元已经存在,但存在错误的关联。一个管理单元不能同时与Schema和另一个管理单元关联");
                    else if (this.oldRelationToSchema != null && this.oldRelationToSchema.Status == SchemaObjectStatus.Normal && actualParent.ID != this.oldRelationToSchema.ParentID)
                        throw new AUObjectValidationException("关系错误。此管理单元已经与另一个Schema关联。");
                    else if (this.oldRelationToUnit != null && this.oldRelationToUnit.Status == SchemaObjectStatus.Normal && actualParent.ID != this.oldRelationToUnit.ParentID)
                        throw new AUObjectValidationException("关系错误。此管理单元已经与另一个AdminUnit关联。");

                }
                else //删除操作,忽略传,m入的parent参数,因此需要查找真实的parent
                {
                    if (oldRelationToUnit != null && oldRelationToUnit.Status == SchemaObjectStatus.Normal)
                    {
                        this.actualParent = SchemaObjectAdapter.Instance.Load(oldRelationToUnit.ParentID);
                    }
                    else if (oldRelationToSchema != null && oldRelationToSchema.Status == SchemaObjectStatus.Normal)
                    {
                        this.actualParent = schema;
                    }
                }


                this.oldRelationToChildren = SchemaRelationObjectAdapter.Instance.LoadByParentID(this.Data.ID);

                if (actualParent is AUSchema)
                {
                    // 应该是跟Schema关联
                    if (oldRelationToSchema != null && oldRelationToSchema.Status == SchemaObjectStatus.Normal)
                    {
                        relationExists = true;
                    }

                    targetRelation = new SCRelationObject(schema, this.Data) { Status = SchemaObjectStatus.Normal };
                }
                else
                {
                    targetRelation = SchemaRelationObjectAdapter.Instance.Load(actualParent.ID, this.Data.ID);
                    if (targetRelation != null)
                    {
                        if (targetRelation.Status == SchemaObjectStatus.Normal)
                        {
                            relationExists = true;
                        }

                        targetRelation.Status = SchemaObjectStatus.Normal;
                    }
                    else
                    {
                        targetRelation = new SCRelationObject(actualParent, this.Data) { Status = SchemaObjectStatus.Normal };
                    }
                }
            });
        }
示例#3
0
		protected override void OnIDChanged()
		{
			base.OnIDChanged();

			this._AllChildrenRelations = null;
			this._AllChildren = null;
			this._CurrentlChildren = null;
		}
        private void PrepareRelationObject()
        {
            AUCommon.DoDbAction(() =>
            {
                this.oldRelationToSchema = SchemaRelationObjectAdapter.Instance.Load(((AdminUnit)this.Data).AUSchemaID, this.Data.ID);
                this.oldRelationToUnit   = SchemaRelationObjectAdapter.Instance.LoadByObjectID(this.Data.ID).Where(m => m.Status == SchemaObjectStatus.Normal && m.ParentSchemaType == AUCommon.SchemaAdminUnit).FirstOrDefault();

                if (this.Data.Status == SchemaObjectStatus.Normal) //添加操作
                {
                    this.actualParent = inputParent != null ? SchemaObjectAdapter.Instance.Load(this.inputParent.ID) : this.schema;

                    if (this.actualParent.ID == this.Data.ID)
                    {
                        throw new AUObjectValidationException("管理单元的父管理单元不能是其自身。");
                    }

                    if (this.actualParent == null || this.actualParent.Status != SchemaObjectStatus.Normal)
                    {
                        throw new AUObjectValidationException("指定的父管理单元在系统中不存在或已删除");
                    }

                    if (this.oldRelationToSchema != null && this.oldRelationToSchema.Status == SchemaObjectStatus.Normal && this.oldRelationToUnit != null && this.oldRelationToUnit.Status == SchemaObjectStatus.Normal)
                    {
                        throw new AUObjectValidationException("关系错误。此管理单元已经存在,但存在错误的关联。一个管理单元不能同时与Schema和另一个管理单元关联");
                    }
                    else if (this.oldRelationToSchema != null && this.oldRelationToSchema.Status == SchemaObjectStatus.Normal && actualParent.ID != this.oldRelationToSchema.ParentID)
                    {
                        throw new AUObjectValidationException("关系错误。此管理单元已经与另一个Schema关联。");
                    }
                    else if (this.oldRelationToUnit != null && this.oldRelationToUnit.Status == SchemaObjectStatus.Normal && actualParent.ID != this.oldRelationToUnit.ParentID)
                    {
                        throw new AUObjectValidationException("关系错误。此管理单元已经与另一个AdminUnit关联。");
                    }
                }
                else //删除操作,忽略传,m入的parent参数,因此需要查找真实的parent
                {
                    if (oldRelationToUnit != null && oldRelationToUnit.Status == SchemaObjectStatus.Normal)
                    {
                        this.actualParent = SchemaObjectAdapter.Instance.Load(oldRelationToUnit.ParentID);
                    }
                    else if (oldRelationToSchema != null && oldRelationToSchema.Status == SchemaObjectStatus.Normal)
                    {
                        this.actualParent = schema;
                    }
                }


                this.oldRelationToChildren = SchemaRelationObjectAdapter.Instance.LoadByParentID(this.Data.ID);

                if (actualParent is AUSchema)
                {
                    // 应该是跟Schema关联
                    if (oldRelationToSchema != null && oldRelationToSchema.Status == SchemaObjectStatus.Normal)
                    {
                        relationExists = true;
                    }

                    targetRelation = new SCRelationObject(schema, this.Data)
                    {
                        Status = SchemaObjectStatus.Normal
                    };
                }
                else
                {
                    targetRelation = SchemaRelationObjectAdapter.Instance.Load(actualParent.ID, this.Data.ID);
                    if (targetRelation != null)
                    {
                        if (targetRelation.Status == SchemaObjectStatus.Normal)
                        {
                            relationExists = true;
                        }

                        targetRelation.Status = SchemaObjectStatus.Normal;
                    }
                    else
                    {
                        targetRelation = new SCRelationObject(actualParent, this.Data)
                        {
                            Status = SchemaObjectStatus.Normal
                        };
                    }
                }
            });
        }