/// <summary>
        /// 새로운 MasterCodeItem을 생성합니다.
        /// </summary>
        /// <param name="masterCode">MasterCode 인스턴스</param>
        /// <param name="itemCode">Item Code</param>
        /// <param name="itemName">Item Name (표시명)</param>
        /// <param name="itemValue">Item Value (값)</param>
        /// <param name="viewOrder">정렬 순서</param>
        /// <returns>새로운 <see cref="MasterCodeItem"/></returns>
        public MasterCodeItem CreateMasterCodeItem(MasterCode masterCode, string itemCode, string itemName, string itemValue, int? viewOrder)
        {
            masterCode.ShouldNotBeNull("masterCode");
            itemCode.ShouldNotBeWhiteSpace("itemCode");

            if(IsDebugEnabled)
                log.Debug(@"새로운 MasterCodeItem을 생성합니다... masterCode={0}, itemCode={1}, itemName={2}, itemValue={3}, viewOrder={4}",
                          masterCode, itemCode, itemName, itemValue, viewOrder);

            var codeItem = new MasterCodeItem(masterCode, itemCode, itemName, itemValue)
                           {
                               ViewOrder = viewOrder
                           };

            masterCode.Items.Add(codeItem);
            //  UnitOfWork.CurrentSession.SaveOrUpdate(masterCode);

            // 정렬 순서를 넣는다.
            if(viewOrder.HasValue == false)
                codeItem.ViewOrder = Math.Max(0, masterCode.Items.Count - 1);

            return Repository<MasterCodeItem>.SaveOrUpdate(codeItem);
        }