/// <summary> /// 添加别名 /// </summary> /// <param name="semantics">语义关系模型</param> public void AddAlias(SemanticsModel semantics) { var cc = GetCcTermById(semantics.FTermClassId).CCCode; //先查看添加的别名在数据库中是否存在 var newTermClassId = _ccTermRepository.GetQuery() .Where(t => t.Term.Equals(semantics.LTerm) && t.CCCode.Equals(cc)) .Select(t => t.TermClassID) .FirstOrDefault(); //若存在只需添加代的关系 if (newTermClassId != 0) { semantics.LTermClassId = newTermClassId; } //若不存在,需将新词添加到叙词表中 再添加代的关系 else { var newTerm = new CcTermModel() { CCCode = cc, Term = semantics.LTerm, TermClassID = semantics.LTermClassId, CreatedBy = semantics.CreatedBy, CreatedDate = semantics.CreatedDate, LastUpdatedBy = semantics.LastUpdatedBy, OrderIndex = semantics.OrderIndex }; //添加的别名 添加到分类叙词表中 别名的概念类与原词相同 newTerm.OrderIndex = _ccTermRepository.GetQuery().Where(t => t.CCCode == cc).Max(t => t.OrderIndex) + 1; semantics.LTermClassId = UpdateCcTerm(newTerm, Operate.Create); } //添加‘D’的关系到语义关系表中 UpdateSemantics(semantics, Operate.Create); }
public int UpdateCcTerm(CcTermModel item, Operate operate) { var entity = new SD_CCTerm { CCCode = item.CCCode, Term = item.Term, LangCode = null, PathTerm = item.PathTerm, Source = item.Source, Description = item.Description, OrderIndex = item.OrderIndex, CreatedDate = item.CreatedDate, CreatedBy = item.CreatedBy, LastUpdatedDate = item.LastUpdatedDate, LastUpdatedBy = item.LastUpdatedBy, Remark = item.Remark }; if (operate != Operate.Create) { entity.TermClassID = item.TermClassID; } switch (operate) { case Operate.Create: _ccTermRepository.Add(entity); break; case Operate.Delete: var ccTermItem = _ccTermRepository.GetQuery() .Where(t => t.TermClassID == entity.TermClassID).FirstOrDefault(); if (ccTermItem != null) { _ccTermRepository.Delete(ccTermItem); } break; default: _ccTermRepository.Update(entity); break; } // TODU: return(entity.TermClassID); }
/// <summary> /// 拖拽节点 /// 1、删除和以前和父节点的关系 /// 2、建立和新的父节点的关系 /// 3、更新叙词的关系 /// </summary> /// <param name="sdModel">语义关系实体</param> /// <param name="dragmodel">拖拽节点实体</param> /// <param name="strSr">概念类名称</param> public void DragNodeEf(SemanticsModel sdModel, CcTermModel dragmodel, string cc) { var sr = GetSRByCC(cc).SR; if (string.IsNullOrEmpty(sr)) { return; } //判断拖拽的节点是不是根节点 //countSemantics == 0,是根节点 var countSemantics = _semanticsRepository.Count(o => o.LTermClassId == dragmodel.TermClassID && o.SR == sr); //当拖拽的是根节点是 if (countSemantics == 0 && sdModel.FTerm != null) { sdModel.SR = sr; //修改关系 UpdateSemantics(sdModel, Operate.Create); } //拖拽的不是根节点 else { var oldsdmodel = _semanticsRepository.GetQuery().FirstOrDefault(o => o.LTermClassId == dragmodel.TermClassID && o.SR == sr); //投放的位置是根节点 if (sdModel.FTerm == null) { _semanticsRepository.Delete(oldsdmodel); } //投放的位置不是根节点 else { _semanticsRepository.Delete(oldsdmodel); sdModel.SR = sr; } } _semanticsRepository.Submit(); }