《MVC + EF+ WCF 》——批量删除数据
来源:互联网 发布:淘宝粉星便利店靠谱么 编辑:程序博客网 时间:2024/05/01 12:52
在维护项目的时候,突然看见Human模块批量删除功能有点小瑕疵,具体的业务逻辑是这样的:在datagrid中获取多条教师的id,然后传给后台Controller进行拆分,最后经拆分后的id保存到数组中传递给Service层,调用底层封装好的删除方法(软删除),进行逐条删除。
之前Controller是这样个逻辑,获取一条id,调用一次服务,访问一次数据库,删除一条数据,那么我如果想删除100条数据的话,就应该调用100次服务,访问100次数据库,然后再删除100条数据,感觉这样的代码太“欠抽了”,于是自己想优化一下,做一些行动下移的事情,积累一下自己的代码量。
我现在想改成这样的业务逻辑:调用一次服务,访问一次数据库,删除多条数据。
前台界面如下所示
JS代码:获取要删除数据的ID(批量删除)
function Delete() { //获取选中行的数据,返回的是数组 var selectRows = $('#dg').datagrid('getSelections'); //如果没有选中行的话,提示信息 if (selectRows.length < 1) { $.messager.alert('人事管理', '请选中要删除的人事记录', 'warning'); return; } //如果选中行了,则要进行判断 $.messager.confirm('人事管理', '确认要删除吗!删除之后,则不能恢复!', function (isDelete) { //如果为真的话 if (isDelete) { //定义变量值 var strIds = ""; for (var i = 0; i < selectRows.length; i++) { strIds += selectRows[i].TeacherID + ','; } strIds = strIds.substr(0, strIds.length - 1); $.post('/Personnal/DeleteTeacher?TeacherID=' + strIds, function (jsonObj) { if (jsonObj > 0) { $.messager.show({ title: '提示', msg: '教师删除成功!', timeout: 5000, showType: 'slide' }); $('#dg').datagrid('reload');//删除成功后 刷新页面 } else { $.messager.alert('人事管理', '删除操作未能完全执行。请稍后再试!', 'warning'); } }, 'JSON'); } });}
Controller代码
public int DeleteTeacher() { int YorN = 1; // 默认成功! bool isDeleted; try { string delTeacherID = Request.QueryString["TeacherID"]; //获取将要删除的教师信息的教工号 string[] TeacherIDs = delTeacherID.Split(','); //逗号分隔符 BasicTeacherViewModel enteacher = new BasicTeacherViewModel(); isDeleted = TeacherService.ModifyTeacher(enteacher, TeacherIDs); //调用修改职工号信息,将IsEnabled设置为0.不可用 if (!isDeleted) { YorN = 0; } } catch (Exception ex) { throw ex; } return YorN;//返回1,证明修改成功 }
服务端代码(B层)
public bool ModifyTeacher(BasicTeacherViewModel enteacher, string[] proNames) { try { for (int i = 0; i < proNames.Length; i++) { BasicTeacherEntities enTeacher = new BasicTeacherEntities(); Guid EditTeacherID = new Guid(proNames[i]); { enTeacher.TeacherID = EditTeacherID; enTeacher.IsEnabled = 0; }; this.CurrentDal.Update(enTeacher, "IsEnabled");//根据职工号修改教师信息, } return this.DbSession.SaveChanges() > 0; //如果大于0,返回true } catch (Exception ex) { throw ex; } }
由于底层封装的Update的方法是根据实体来更新数据,所以我们更新的时候要创建一个教师的实体,但是在最后的代码中,每次的循环都创建一个BasicTeacherEntities,这样无疑给内存增加压力,曾尝试BasicTeacherEntities实体的实例化放在for循环外面,但是前台传来多条数据之后,for循环执行两次就结束了,这不知道为什么?自己继续研究吧....
2 0
- 《MVC + EF+ WCF 》——批量删除数据
- 《EasyUI + MVC + EF +WCF》——实现对Datagrid中数据的批量修改或保存
- EF 批量更新/删除数据
- EF 批量更新/删除数据
- [转]EF 批量更新/删除数据
- EF批量删除执行
- 《MVC + EF实现增删改查》——操作EF实体详解与删除
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)
- 框架设计之成绩登统系统—EF+WCF+MVC(一)
- MVC jquery ajax 批量删除数据
- EF结合SqlBulkCopy实现高效的批量数据插入 |EF插件EntityFramework.Extended实现批量更新和删除
- EF结合SqlBulkCopy实现高效的批量数据插入 |EF插件EntityFramework.Extended实现批量更新和删除
- Easyui+EF+MVC+WCF实现分页
- EF+WCF+MVC实现SOA架构
- Easyui+EF+MVC+WCF实现分页
- MVC框架的EF删除
- c# mvc 中linq和ef配合实现批量插入数据
- ASP.NET + MVC +EF 实现批量更新
- poj3693Maximum repetition substring【后缀数组+RMQ求重复最多连续子串】
- 从头认识Spring-3.3 简单的AOP日志实现-增加检查订单功能
- TCP/IP、Http、Socket的区别
- PAT--1013 Battle Over Cities(并查集)
- 利用python求解八数码难题
- 《MVC + EF+ WCF 》——批量删除数据
- HDU1075 What Are You Talking About
- Windows基础-使用XAudio2播放音频(本质是WASAPI)
- 基于百度API的开源自动翻译.srt文件软件的实现的几个技术细节总结附源代码
- elasticsearch zen discovery
- 自定义View
- swift基本语法(总结提炼版)之001常量&变量
- symfony2 如何测试与数据库交互的代码
- linux设备模型分析之bus_register()