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);
        }
        public static SCSimpleRelationObjectCollection LoadRelations(string parentId, string[] requestIds)
        {
            if (requestIds.Length == 0)
            {
                return(new SCSimpleRelationObjectCollection());
            }
            else
            {
                WhereSqlClauseBuilder whereSql = new WhereSqlClauseBuilder();

                whereSql.AppendItem("ParentID", parentId);
                whereSql.AppendItem("Status", (int)SchemaObjectStatus.Normal);

                InSqlClauseBuilder inSql = new InSqlClauseBuilder("ObjectID");
                inSql.AppendItem(requestIds);

                var relations = Adapters.SchemaRelationObjectAdapter.Instance.Load(new ConnectiveSqlClauseCollection(whereSql, inSql), DateTime.MinValue);

                SCSimpleRelationObjectCollection result = new SCSimpleRelationObjectCollection();

                foreach (var r in relations)
                {
                    result.Add(new SCSimpleRelationObject()
                    {
                        CreateDate       = r.CreateDate,
                        Creator          = r.Creator,
                        ID               = r.ID,
                        ParentID         = r.ParentID,
                        SchemaType       = r.SchemaType,
                        Status           = r.Status,
                        VersionEndTime   = r.VersionEndTime,
                        VersionStartTime = r.VersionStartTime
                    });
                }

                return(result);
            }
        }
		public static SCSimpleRelationObjectCollection LoadRelations(string parentId, string[] requestIds)
		{
			if (requestIds.Length == 0)
			{
				return new SCSimpleRelationObjectCollection();
			}
			else
			{
				WhereSqlClauseBuilder whereSql = new WhereSqlClauseBuilder();

				whereSql.AppendItem("ParentID", parentId);
				whereSql.AppendItem("Status", (int)SchemaObjectStatus.Normal);

				InSqlClauseBuilder inSql = new InSqlClauseBuilder("ObjectID");
				inSql.AppendItem(requestIds);

				var relations = Adapters.SchemaRelationObjectAdapter.Instance.Load(new ConnectiveSqlClauseCollection(whereSql, inSql), DateTime.MinValue);

				SCSimpleRelationObjectCollection result = new SCSimpleRelationObjectCollection();

				foreach (var r in relations)
				{
					result.Add(new SCSimpleRelationObject()
					{
						CreateDate = r.CreateDate,
						Creator = r.Creator,
						ID = r.ID,
						ParentID = r.ParentID,
						SchemaType = r.SchemaType,
						Status = r.Status,
						VersionEndTime = r.VersionEndTime,
						VersionStartTime = r.VersionStartTime
					});
				}

				return result;
			}
		}