/// <summary>
        /// 지정된 child 부서를 newParent의 하위부서로 이동시킨다.
        /// </summary>
        public void ChangeDepartmentParent(Department child, Department newParent)
        {
            child.ShouldNotBeNull("child");

            var oldParent = child.Parent;

            if(Equals(oldParent, newParent))
            {
                if(log.IsWarnEnabled)
                    log.Warn("변경할 부모가 현재 부모와 같으므로, 부모 변경 작업을 수행하지 않습니다.");
                return;
            }

            if(IsDebugEnabled)
                log.Debug("부서의 부모를 변경합니다. child={0}, new parent={1}, old parent={2}",
                          child.Code,
                          (newParent != null) ? newParent.Code : EntityTool.NULL_STRING,
                          (oldParent != null) ? oldParent.Code : EntityTool.NULL_STRING);

            child.ChangeParent(oldParent, newParent);

            Repository<Department>.SaveOrUpdate(child);
        }