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; } }