Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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();
        }