网站建设资讯

NEWS

网站建设资讯

篇(7)-Asp.Net Core入门实战-从系统菜单功能的增删改查开始(二:修改和删除)

入门实战-从系统菜单功能的增删改查开始(一:修改和删除)

成都创新互联公司专注于砀山企业网站建设,响应式网站设计,商城网站建设。砀山网站建设公司,为砀山等地区提供建站服务。全流程按需求定制制作,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

上一篇讲了查询和增加,本章节就把修改和删除讲完。

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();

名称栏目:篇(7)-Asp.Net Core入门实战-从系统菜单功能的增删改查开始(二:修改和删除)
转载源于:http://njwzjz.com/article/dsopdds.html