分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

MVC+EF之多表关联数据更新

发布时间:2023-09-06 01:30责任编辑:郭大石关键词:MVC

多表关联数据更新
关联数据有两种:一种是一对多,一种总是多对多
eg:假设一个用户可以有任意多个角色,一个角色可以有任意多个用户。 下面来实现编辑某个用户时,显示该用户的角色进行编辑。
步骤:
1.先添加一个ViewModel, 用来表示角色是否分配给某个用户。
2.打开UserRoleController,添加一个Edit的Action用来显示编辑页面。
3.打开Views\UserRole\Index.cshtml, 增加一个编辑按钮  
4.再根据Edit Action自动生成Edit View  
5.修改相关内容,主要是两点:其一是部门,其二市角色(角色是通过一组checkbox来显示的。Checkbox显示数据库中所有角色,已分配给用户的会显示选中状态。通过勾选checkbox的方式来实现用户角色的更新)
注意:角色少这样弄没问题,如果多的话经典的做法,可以用两个listbox,中间用箭头将左右两边的选项移动
6.最后再完成HttpPost的Edit功能
a.首先更新SysUser表:用model binder中的值更新entity: userToUpdate.可以看到,我们使用了白名单指定数据库中需要更新的字段。
TryUpdateModel(userToUpdate,"",new string[] {"LoginName","Email","Password","CreateDate","SysDepartmentID"})
b.再更新SysUserRole表:将数据库中值和编辑后的值进行比对,基本逻辑是:如果被选中了,原来没有的要添加;如果没被选中,原来有的要删除。
UpdateUserRoles(selectedRoles, userToUpdate);
注意:在UpdateUserRoles里,我新建了一个连接using (AccountContext db2=new AccountContext())如果用之前的db会报如下错误:已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
原生SQL使用总结
A.原生SQL执行查询:
需要返回实体模型,使用DbSet.SqlQuery (context会跟踪,等效于LINQ方式)
需要返回其他类型,使用Database.SqlQuery
B.原生SQL执行更新:
使用Database.ExecuteSqlCommand

MVC+EF之多表关联数据更新

原文地址:http://www.cnblogs.com/xue-er/p/8023218.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved