LINQ删除之单条数据的删除

开发工具与关键技术:Visual Studio 2015   LINQ
作者:孙水兵
撰写时间:2019年4月23

一、 删除前期工作:
在控制器最上端引入Models和装实体类的文件名称
在这里插入图片描述

实例化Models
在控制器的命名空间中实例化Models
Models.CQUPTEntities 自定义名称 = new Models.CQUPTEntities();

在这里插入图片描述
二、 单表的删除
了解表格
在删除之前要先查看要删除的表格,知道哪些表格和自己要删除表格有联系,就比如我现在要删除的是知识点表(SYS_Point)。就现在以知识点表来说,知识点表是父表,而题目表是子表,所以,要删除父表,先判断子表中是否含有要删除的父表的ID。若没有,可以删除,若有,不可以删除。
在这里插入图片描述

三、 目的:选中单条数据,点击删除按钮,然后删除。
四、 代码分析
HTML
这的代码很简单,只需设置一个删除按钮就行。在写了除后记得返回写点击事件。
在这里插入图片描述
JS部分
写一个删除的方法deletePoint,写完后要记得去删除按钮那写点击事件。由于我这用的是Layui插件,获取选中行的数据还有设置删除按钮都是用的Layui插件。(若不用插件,在HTML中设置按钮,然后再删除方法中获取数据,然后再继续往下写弹出询问提示框(由于layer也是Layui插件中的,因此将含有layer的提示都改为不含layer的提示))。使用插件从表格众获取选中行的数据,取出数据中要删除数据的表格的主键ID(PointID)。将该主键ID作为参数传入方法中。用Layui插件设置一个询问提示框,询问用户是否要删除该条数据,然后在询问后要执行的方法中写一个参数(layIndex),用来记录询问提示框的,点击确定关闭询问提示框(layer.close(layIndex);)。继续往下执行,用post提交传入要删除数据的表格的主键ID(PointID)。用data接收控制器返回的数据,判断控制器返回数据中的state(状态)是否为true。若为true,刷新表格,输出state为true时返回的文本,反之,输出state为false时返回的文本。

       //删除
       function deleteSubject(SubjectId) {
           layer.confirm('你确定要删除该用户类型?', { icon: 3, title: '提示' }, function (index) {
               layer.close(index);
               //打开加载层
               layIndex = layer.load();
               $.post("DeleteSubject", { SubjectId: SubjectId }, function (data) {
                   layer.close(layIndex);//关闭加载层
                   if (data.State) {
                       //属性表格
                       tabSubject.reload();
                       layer.alert(data.Text, { icon: 1, title: '提示' })
                   } else {
                       layer.alert(data.Text, { icon: 2, title: '提示' })
                   }
               }, 'json');

           });
       }

控制器代码
删除的核心语句:
实例化Models的名称.要删除的表格名称.Remove(查询出要删除数据(单条数据))
示例:myModels.SYS_Point.Remove(varPoint);
创建保存删除的方法DeletePoint,接收视图传过来的数据PointID(要删除数据的表格的主键ID)。实例化一个ReturnJsonVo(详情可见linq新增之单表表新增),将其命名为returnJson,用来返回状态和文本。由于ReturnJsonVo中的state为bool,而bool类型默认为false,所以returnJson中的state默认为false。由于等会查询要删除的数据时用到单条数据的查询(Single),所以捕获异常,出现异常,输出文本。根据视图传过来的数据PointID在题目表中查找是否有对应的知识点ID(PointID)。如果有,说明该知识点下存在题目,不能删除,否则会导致试题中的被删除知识点下的题目为垃圾数据。如果没有(查出来的titleCount==0),根据视图传过来的数据PointID查询出该知识点并用varPoint接收。然后移除该条数据(myModels.SYS_Point.Remove(varPoint);)。myModel.SaveChanges()为保存数据。所以判断,如果myModel.SaveChanges()>0,则表示删除成功,设置returnJson的状态为true,并返回文本:删除成功。反之返回文本:删除失败。最后,用Json格式将returnJson返回,并设置允许请求。

    public ActionResult DeletePoint(int PointID)
       {
           ReturnJsonVo returnJson = new ReturnJsonVo();
           try
           {
               var titleCount = (from tbTitle in myModels.PW_Title
                                 where tbTitle.PointID == PointID
                                 select tbTitle).Count();
               if (titleCount == 0)
               {
                   var varPoint = (from tbPoint in myModels.SYS_Point
                                   where tbPoint.PointID == PointID
                                   select tbPoint).Single();
                   myModels.SYS_Point.Remove(varPoint);
                   if (myModels.SaveChanges() > 0)
                   {
                       returnJson.State = true;
                       returnJson.Text = "删除成功!";
                   }
                   else
                   {
                       returnJson.Text = "删除失败!";
                   }
               }
               else
               {
                   returnJson.Text = "该知识点下存在题目,不能删除!";
               }
           }
           catch (Exception e)
           {
               Console.Write(e);
               returnJson.Text = "参数异常!";
           }

           return Json(returnJson, JsonRequestBehavior.AllowGet);
       }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值