十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
入门实战-从系统菜单功能的增删改查开始(一:修改和删除)
成都创新互联公司专注于砀山企业网站建设,响应式网站设计,商城网站建设。砀山网站建设公司,为砀山等地区提供建站服务。全流程按需求定制制作,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
上一篇讲了查询和增加,本章节就把修改和删除讲完。
1.实现修改功能。
(1).在MenuController中增加2个Action:Edit,分别是HttpGet和HttpPost;
在post类型的Edit中注意参数,并完善修改代码:
HttpPost的Edit 方法,有点特殊,我先看一个参数,就是把Menu对象传递为编辑时的参数情况:
我的目的是更新成功返回True,但发现_appDbContext.Menu.Update(menu)的执行返回结果居然是个Id值,而且调试跟踪也出了异常,有空值。为什么呢?这样的写法肯定不对,
将对象menu作为参数,那么依照自动绑定机制,从view传递过来就3个值,其他值肯定为空,如果在用menu作为更新对象,那么就是将很多字段空值更新原有表,这个逻辑就错了。所以,需要向找到旧的值,将不变的赋值给对象,然后重新更新。我下面修正后的更新代码,Edit用到2个参数(int id,Menu menu):
当然这只是一种更新方式,EF有常用的三种更新方式的代码,我从网络上挪下来,看看你习惯用那种(具体的区别,自行百度一下EF更新数据的三种方式):
AppDbContext db = new AppDbContext(); var test = db.Menu.Find(1); test.DisplayName= "第1种更新方式"; db.SaveChanges(); AppDbContext db= new AppDbContext(); Menu test= new Menu() { Id = 1, DisplayName = "第2种更新方式" }; db.Entry(test).State= EntityState.Modified; db.SaveChanges(); AppDbContext db= new AppDbContext(); Menu test= new Menu() { Id = 1, DisplayName = "第3种更新方式" }; db.Menu.Attach(test); db.Entry(test).Property("DisplayName").IsModified = true; db.SaveChanges();