/// <summary>
        /// 지정된 자식 Menu의 부모를 지정된 Menu로 변경합니다.
        /// </summary>
        /// <param name="child">child menu</param>
        /// <param name="newParent">new parent menu</param>
        public void ChangeMenuParent(Menu child, Menu newParent)
        {
            child.ShouldNotBeNull("child");

            var oldParent = child.Parent;

            if(Equals(oldParent, newParent))
            {
                if(log.IsInfoEnabled)
                    log.Info(@"변경할 부모가 현재 부모와 같습니다. 부모 변경 작업을 수행하지 않습니다.");

                return;
            }

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

            child.ChangeParent(oldParent, newParent);
            child.UpdateNodePosition();

            Repository<Menu>.SaveOrUpdate(child);
        }