private void FillAllChildrenRelationsRecursively(SCSimpleRelationObjectCollection relations, InSqlClauseBuilder builder, LoadingRelationsRecursivelyHandler handler, object context)
        {
            if (builder.Count > 0)
            {
                string sql = string.Format("SELECT ParentID, ObjectID FROM {0} WHERE {1} AND VersionStartTime <= GETDATE() AND VersionEndTime > GETDATE() AND STATUS = 1",
                                           GetMappingInfo().TableName, builder.ToSqlStringWithInOperator(TSqlBuilder.Instance));

                DataTable table = DbHelper.RunSqlReturnDS(sql, this.GetConnectionName()).Tables[0];

                SCSimpleRelationObjectCollection tempRelations = new SCSimpleRelationObjectCollection();

                ORMapping.DataViewToCollection(tempRelations, table.DefaultView);

                InSqlClauseBuilder subBuilder = new InSqlClauseBuilder("ParentID");

                foreach (SCSimpleRelationObject r in tempRelations)
                {
                    subBuilder.AppendItem(r.ID);
                    relations.Add(r);
                }

                if (handler != null)
                {
                    handler(tempRelations, context);
                }

                FillAllChildrenRelationsRecursively(relations, subBuilder, handler, context);
            }
        }
        /// <summary>
        /// 递归获取所有子对象的关系
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="handler"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public SCSimpleRelationObjectCollection LoadAllChildrenRelationsRecursively(SchemaObjectBase obj, LoadingRelationsRecursivelyHandler handler, object context)
        {
            obj.NullCheck("obj");

            SCSimpleRelationObjectCollection result = new SCSimpleRelationObjectCollection();

            InSqlClauseBuilder builder = new InSqlClauseBuilder("ParentID");

            builder.AppendItem(obj.ID);

            FillAllChildrenRelationsRecursively(result, builder, handler, context);

            return(result);
        }