private void InternalUpdateOneLevelChildrenFullPath(SCRelationForFullPath parent) { if (parent != null) { if (parent.FullPath == null) { parent.FullPath = string.Empty; } if (parent.GlobalSort == null) { parent.GlobalSort = string.Empty; } SCRelationForFullPathCollection children = LoadChildRFP(parent.ObjectID); SCRelationForFullPathCollection needToUpdate = children.SetAndFilterUnmatched(parent.FullPath, parent.GlobalSort); this.UpdateRelations(needToUpdate); foreach (SCRelationForFullPath rfp in children) { InternalUpdateOneLevelChildrenFullPath(rfp); } } }
private static string BuildUpdateFullPathSql(SCRelationForFullPath rfp) { StringBuilder strB = new StringBuilder(); strB.AppendFormat("UPDATE SC.SchemaRelationObjects SET FullPath = {0}, GlobalSort = {1} WHERE ParentID = {2} AND ObjectID = {3}", TSqlBuilder.Instance.CheckUnicodeQuotationMark(rfp.FullPath), TSqlBuilder.Instance.CheckUnicodeQuotationMark(rfp.GlobalSort), TSqlBuilder.Instance.CheckUnicodeQuotationMark(rfp.ParentID), TSqlBuilder.Instance.CheckUnicodeQuotationMark(rfp.ObjectID) ); strB.AppendFormat(TSqlBuilder.Instance.DBStatementSeperator); strB.AppendFormat("UPDATE SC.SchemaRelationObjectsSnapshot SET FullPath = {0}, GlobalSort = {1} WHERE ParentID = {2} AND ObjectID = {3}", TSqlBuilder.Instance.CheckUnicodeQuotationMark(rfp.FullPath), TSqlBuilder.Instance.CheckUnicodeQuotationMark(rfp.GlobalSort), TSqlBuilder.Instance.CheckUnicodeQuotationMark(rfp.ParentID), TSqlBuilder.Instance.CheckUnicodeQuotationMark(rfp.ObjectID) ); return(strB.ToString()); }
private SCRelationForFullPath LoadRFPByID(string parentID) { if (parentID.IsNullOrEmpty()) { parentID = SCOrganization.RootOrganizationID; } SCRelationForFullPath result = null; if (parentID == SCOrganization.RootOrganizationID) { result = new SCRelationForFullPath(); result.ParentID = string.Empty; result.ObjectID = parentID; result.Name = SCOrganization.GetRoot().Name; result.InnerSort = 0; result.FullPath = string.Empty; result.GlobalSort = string.Empty; } else { string sql = string.Format("SELECT ParentID, R.ObjectID, SC.Name, R.ChildSchemaType, R.InnerSort, R.FullPath, R.GlobalSort FROM {0} WHERE ObjectID = {1} AND ChildSchemaType = 'Organizations'", "SC.SchemaRelationObjectsSnapshot_Current R INNER JOIN SC.SchemaObjectSnapshot_Current SC ON R.ObjectID = SC.ID", TSqlBuilder.Instance.CheckUnicodeQuotationMark(parentID)); DataTable table = DbHelper.RunSqlReturnDS(sql, this.GetConnectionName()).Tables[0]; if (table.Rows.Count > 0) { result = new SCRelationForFullPath(); ORMapping.DataRowToObject(table.Rows[0], result); } } return(result); }
public void UpdateChildrenFullPath(string parentID = SCOrganization.RootOrganizationID) { SCRelationForFullPath parent = LoadRFPByID(parentID); InternalUpdateOneLevelChildrenFullPath(parent); }