/// <summary> /// 根据 父级Argument、子级枚举值 获取子级枚Custom /// </summary> /// <param name="Argument">父级Argument</param> /// <param name="value">子级名称</param> /// <returns></returns> public string GetCustom(string Argument, int val) { FDataDictionary fDataDictionary = fdataDictionaries.FirstOrDefault(aa => aa.Argument == Argument) ?? throw new OperateException($"未知异常,{nameof(GetCustom)}:{Argument}"); DataDictionary dataDictionary = fDataDictionary.DataDictionary.FirstOrDefault(aa => aa.Value == val) ?? throw new OperateException($"未知异常,{nameof(GetCustom)}:{nameof(Argument)}:{Argument}---{nameof(val)}:{ val }"); return(dataDictionary.Custom); }
/// <summary> /// 根据父级Argument,子级名称,获取子级对象 /// </summary> /// <param name="Argument"></param> /// <param name="name"></param> /// <returns></returns> public DataDictionary ITEM(string Argument, string name) { FDataDictionary fDataDictionary = fdataDictionaries.FirstOrDefault(aa => aa.Argument == Argument) ?? throw new OperateException($"未知异常,{nameof(ITEM)}:{Argument}"); var dataDictionary = fDataDictionary.DataDictionary.FirstOrDefault(aa => aa.Key == name) ?? throw new OperateException($"未知异常,{nameof(ITEM)}:{nameof(Argument)}:{Argument}---{nameof(name)}:{name}"); return(dataDictionary); }
/// <summary> /// 根据 父级Argument、子级名称 获取子级枚Custom /// </summary> /// <param name="Argument">父级Argument</param> /// <param name="key">子级名称</param> /// <returns></returns> public string GetCustom(string Argument, string key) { FDataDictionary fDataDictionary = fdataDictionaries.FirstOrDefault(aa => aa.Argument == Argument) ?? throw new OperateException($"未知异常,{nameof(GetCustom)}:{Argument}"); DataDictionary dataDictionary = fDataDictionary.DataDictionary.FirstOrDefault(aa => aa.Key == key) ?? throw new OperateException($"未知异常,{nameof(GetCustom)}:{nameof(Argument)}:{Argument}---{nameof(key)}:{ key }"); return(dataDictionary.Custom); }
/// <summary> /// 编辑父级字典 /// </summary> /// <param name="changedDataDictionary">父级实体对象</param> public void Edit(FDataDictionary changedDataDictionary) { var args = new DataDictionaryDataChangedArgs { DictionaryChangeType = ChangeType.Edit }; using (var db = new ShopEntities()) { var entity = db.FDataDictionary.Where(p => p.FDictionaryID == changedDataDictionary.FDictionaryID).FirstOrDefault() ?? throw new OperateException("指定的字典父级已删除"); var data = db.FDataDictionary.Where(p => p.Argument == changedDataDictionary.Argument).FirstOrDefault(); if (entity.Argument != changedDataDictionary.Argument && data != null) { throw new OperateException("已存在同值父级"); } db.Entry(entity).State = EntityState.Detached; db.Entry(db.FDataDictionary.Attach(changedDataDictionary)).State = EntityState.Modified; db.SaveChanges(); args.Add(changedDataDictionary); } try { Task.Run(() => DataDictionaryDataChanged?.Invoke(null, args)); } catch { } }
/// <summary> /// 根据父级Argument、子级名称 获取自己枚举值(仅允许g_config使用) /// </summary> /// <param name="name"></param> /// <returns></returns> public int VALUE_CONFIG(string name) { string Argument = "g_config"; FDataDictionary fDataDictionary = fdataDictionaries.FirstOrDefault(aa => aa.Argument == Argument) ?? throw new OperateException($"未知异常,{nameof(VALUE)}:{Argument}"); DataDictionary dataDictionary = fDataDictionary.DataDictionary.FirstOrDefault(aa => aa.Name == name) ?? throw new OperateException($"未知异常,{nameof(VALUE)}:{nameof(Argument)}:{Argument}---{nameof(name)}:{ name}"); return(dataDictionary.Value); }
/// <summary> /// 编辑父级字典 /// </summary> public void FEditDictionary() { RequestUser(); int FDictionaryID = int.Parse(GetParams("FDictionaryID")); string Name = GetParams("Name"); string Argument = GetParams("Argument"); FDataDictionary fd = new FDataDictionary(); fd.FDictionaryID = FDictionaryID; fd.Name = Name; fd.Argument = Argument; IDDC.Edit(fd); }
/// <summary> /// 编辑字典 /// </summary> /// <param name="entity">参数实体对象</param> public void Edit(EdtiDataDictionary entity) { if (entity.fDictionaryID.HasValue) { var data = new DataDictionary { Color = entity.Color, Custom = entity.custom, Key = entity.key, DictionaryID = entity.DictionaryID, FDictionaryID = entity.fDictionaryID.Value, Icon = entity.icon, Name = entity.Name }; try { data.Value = int.Parse(entity.value); } catch (FormatException ex) { throw new OperateException("子级字典值应是一个数值", ex); } Edit(data); } else { var data = new FDataDictionary { Name = entity.key, Argument = entity.value, FDictionaryID = entity.DictionaryID }; Edit(data); } InitList(); }
/// <summary> /// 添加字典 /// </summary> /// <param name="entity">参数实体对象</param> public void Add(DataDictionaryAddParams entity) { var args = new DataDictionaryDataChangedArgs { DictionaryChangeType = ChangeType.Add }; using (var db = new ShopEntities()) { //判断可空类型是否有值,如果有值返回true反之false if (entity.FID.HasValue) { int value; if (!int.TryParse(entity.Value, out value)) { throw new OperateException("子级字典值应是数值"); } if (db.DataDictionary.Where(p => p.Value == value && p.FDictionaryID == entity.FID).Count() > 0) { throw new OperateException("值重复"); } var dataDictionary = new DataDictionary { FDictionaryID = entity.FID.Value, Color = entity.Color, Icon = entity.Icon, Key = entity.Key, Custom = entity.Custom, Value = value, Name = entity.Name }; db.DataDictionary.Add(dataDictionary); args.Add(dataDictionary); } else { if (db.FDataDictionary.Where(p => p.Argument.Equals(entity.Value)).Count() > 0) { throw new OperateException("值重复"); } var fDataDictionary = new FDataDictionary { Name = entity.Key, Argument = entity.Value, }; db.FDataDictionary.Add(fDataDictionary); args.Add(fDataDictionary); } if (!(db.SaveChanges() > 0)) { throw new OperateException("数据库错误,没有数据变化"); } } try { Task.Run(() => DataDictionaryDataChanged?.Invoke(null, args)); } catch { } InitList(); }
/// <summary> /// 添加变更的实体 /// </summary> public void Add(FDataDictionary entity) { fDataDictionary.Add(entity); }
/** * 说明:(在数据库中 Argument、Value 才是唯一的) * 1、获取查询父级时 FDataDictionary 对象以 Argument 字段唯一区分 * 2、获取查询子级时 DataDictionary 对象以 Value 字段唯一区分 * 3、添加特殊 查询方法时 方法需要 static 化 * * **/ /// <summary> /// 根据父级Argument 获取子级列表 /// </summary> /// <param name="Argument">父级Argument</param> /// <returns></returns> public List <DataDictionary> LIST(string Argument) { FDataDictionary fDataDictionary = fdataDictionaries.FirstOrDefault(aa => aa.Argument == Argument) ?? throw new OperateException($"未知异常,LIST:{Argument}"); return(fDataDictionary.DataDictionary.ToList()); }
/// <summary> /// 编辑父级字典 /// </summary> /// <param name="changedDataDictionary">父级实体对象</param> public void Edit(FDataDictionary changedDataDictionary) { IDDM.Edit(changedDataDictionary); }