public void Update(Category entityModel)
        {
            var entity = Repository.Get(entityModel.Id);

            if (entity == null)
            {
                throw new Exception(string.Format("{0} is not found", entityModel.Name));
            }
            if (Repository.GetAll(a => a.Name.Equals(entityModel.Name) && a.Id != entity.Id).Any())
            {
                throw new Exception(string.Format("Category {0} is exist", entity.Name));
            }
            var ancestor = UtilString.GenTempName(entityModel.Name);
            var parent   = Repository.Get(entityModel.ParentId);

            if (parent != null)
            {
                entity.ParentId = parent.Id;
                ancestor        = parent.Ancestor + "|" + ancestor;
            }
            entity.Name = entityModel.Name;
            var children = Repository.GetAll(a => a.Ancestor.StartsWith(entity.Ancestor));

            foreach (var child in children)
            {
                child.Ancestor = child.Ancestor.Replace(entity.Ancestor, ancestor);
            }
            entity.Ancestor = ancestor;
            Repository.Update(entity);
            UnitOfWork.Save();
        }
        public void Insert(Category entityModel)
        {
            if (Repository.GetAll(a => a.Name.Equals(entityModel.Name)).Any())
            {
                throw new Exception(string.Format("Category {0} is exist", entityModel.Name));
            }
            var ancestor = UtilString.GenTempName(entityModel.Name);

            var parent = Repository.Get(entityModel.ParentId);

            if (parent != null)
            {
                entityModel.ParentId = parent.Id;
                ancestor             = parent.Ancestor + "|" + ancestor;
            }
            entityModel.Ancestor = ancestor;
            Repository.Insert(entityModel);
            UnitOfWork.Save();
        }