/// <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); }
/// <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); }