Ejemplo n.º 1
0
        /// <summary>
        /// 添加一个枚举项
        /// </summary>
        /// <param name="dataItemEntity"></param>
        /// <param name="parentId"></param>
        public void AddItem(EnumItemEntityDev enumItemEntity)
        {
            if (enumItemEntity == null || enumItemEntity.Owner == null)
            {
                Debug.Assert(false, "参数异常");
                return;
            }

            string enumId = enumItemEntity.Owner.Id;

            //判断指定的枚举是否存在
            bool entityExist = EntityExistById(enumId);

            Debug.Assert(entityExist, "枚举不存在");
            if (entityExist == false)
            {
                return;
            }

            string file = Path.Combine(Constant.PACKAGE_DICTIONARY_FOLDER, enumId);

            //在数据实体XML中加上数据项节点
            //首先尝试从缓存中获取
            XElement entityElement = (XElement)_cachingService.GetData(enumId);
            string   strEntity;

            if (entityElement == null)
            {
                //拿枚举文件
                bool fileExist = _packageService.Current.Container(file);
                Debug.Assert(fileExist, "枚举文件不存在");
                if (fileExist == false)
                {
                    return;
                }

                strEntity     = _packageService.Current.GetFileContent(file);
                entityElement = XElement.Parse(strEntity);
                _cachingService.Add(enumId, entityElement);
            }

            entityElement.XPathSelectElement(XPATH_Dictionary_Items).Add(XElement.Parse(enumItemEntity.ToXml()));

            //保存文件
            _packageService.Current.AddFileContent(entityElement.ToString(), file);

            if (enumItemEntity.Owner.Items.Contains(enumItemEntity) == false)
            {
                enumItemEntity.Owner.Items.Add(enumItemEntity);
            }

            //发布事件
            EnumItemEventArgs args = new EnumItemEventArgs(enumItemEntity);

            _eventAggregator.GetEvent <EnumItemEntityAddedEvent>().Publish(args);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 更新数据项
        /// </summary>
        /// <param name="dataItemEntity"></param>
        public void UpdateItem(EnumItemEntityDev enumItemEntity)
        {
            if (enumItemEntity == null || enumItemEntity.Owner == null)
            {
                Debug.Assert(false, "参数异常");
                return;
            }

            string enumId = enumItemEntity.Owner.Id;

            //判断指定的数据实体是否存在
            bool entityExist = EntityExistById(enumId);

            Debug.Assert(entityExist, "枚举不存在");
            if (entityExist == false)
            {
                return;
            }

            string file = Path.Combine(Constant.PACKAGE_DICTIONARY_FOLDER, enumId);

            //在枚举XML中更新数据项节点
            XElement entityElement = (XElement)_cachingService.GetData(enumId);
            string   strEntity;

            if (entityElement == null)
            {
                //拿数据实体文件
                bool fileExist = _packageService.Current.Container(file);
                Debug.Assert(fileExist, "枚举文件不存在");
                if (fileExist == false)
                {
                    return;
                }

                strEntity     = _packageService.Current.GetFileContent(file);
                entityElement = XElement.Parse(strEntity);
                _cachingService.Add(enumId, entityElement);
            }

            entityElement.XPathSelectElement(String.Format(XPATH_Dictionary_SelectItem, enumItemEntity.Id)).ReplaceWith(XElement.Parse(enumItemEntity.ToXml()));

            //保存文件
            _packageService.Current.AddFileContent(entityElement.ToString(), file);

            //发布事件
            EnumItemEventArgs args = new EnumItemEventArgs(enumItemEntity);

            _eventAggregator.GetEvent <EnumItemEntityUpdatedEvent>().Publish(args);
        }