经验总结18--EF修改关系,多对多
2014-07-14 16:47
176 查看
EF修改关系让我费事蛮多时间,能查的资料少,网上试了很多方法都不对。
最后还是自己研究出来了,在这里和大家分享下,有更好的方法也可以分享下。
首先说说我一般做修改功能时,前台传参数,后台使用对象接收,然后使用实体包含,修改策略,提交数据库即可。(之前应该有文章说过)
但是涉及到关系时,重新赋值后,内存可以改变,但没有更新数据库。
试了很多办法,开始以为是配置的问题,一直找相关的内容,都没效果。
下面分享下实现过程:
1、前台传参。
EditID,Name,NewRole
2、后台接收。
User user,注意接收时,避免EditID和实体ID名字相同,避免实体重复。
接收并处理好Role对象。
3、处理数据。
User u=db.Users.Find(EditID);//从数据库查出实体
u.Name=...//给各属性赋值
u.Roles.Clear();//清理角色,这个为啥我也不清楚。没有的话,正常运行会报错,但是调试不报错,很奇怪。这个我也是自己试出来的。
u.Roles=NewRole;//给角色赋值。
4、提交数据库即可。
db.SaveChanges();
简单的说原理,就是修改关系,必须得是从数据库查出的实体,感觉凭技术,EF应该是可以实现的。
有其他方法的朋友可以分享下。
最后还是自己研究出来了,在这里和大家分享下,有更好的方法也可以分享下。
首先说说我一般做修改功能时,前台传参数,后台使用对象接收,然后使用实体包含,修改策略,提交数据库即可。(之前应该有文章说过)
但是涉及到关系时,重新赋值后,内存可以改变,但没有更新数据库。
试了很多办法,开始以为是配置的问题,一直找相关的内容,都没效果。
下面分享下实现过程:
1、前台传参。
EditID,Name,NewRole
2、后台接收。
User user,注意接收时,避免EditID和实体ID名字相同,避免实体重复。
接收并处理好Role对象。
3、处理数据。
User u=db.Users.Find(EditID);//从数据库查出实体
u.Name=...//给各属性赋值
u.Roles.Clear();//清理角色,这个为啥我也不清楚。没有的话,正常运行会报错,但是调试不报错,很奇怪。这个我也是自己试出来的。
u.Roles=NewRole;//给角色赋值。
4、提交数据库即可。
db.SaveChanges();
简单的说原理,就是修改关系,必须得是从数据库查出的实体,感觉凭技术,EF应该是可以实现的。
有其他方法的朋友可以分享下。
相关文章推荐
- 经验总结18--EF改动关系,多对多
- 修改他人代码经验总结
- 经验总结:修改MySQL默认密码的具体步骤
- 和各种诡异 Bug 打交道 13 年,我总结了 18 个经验
- 手机网上商城-项目经验总结(十一)-修改购物车商品数量
- DOA项目经验总结(App.config文件的修改)
- 修改nginx站点根目录总结经验(小结)
- 和各种诡异 Bug 打交道 13 年,我总结了 18 个经验
- 和各种诡异 Bug 打交道 13 年,我总结了 18 个经验
- 和各种诡异 Bug 打交道 13 年,我总结了 18 个经验
- Windows Phone开发经验谈(18)-总结两种滚动条到底部加载数据的方法
- 经验总结16--EF局部更新数据
- 经验总结14--EF策略和数据迁移的数据初始化
- 修改nginx站点根目录总结经验
- [转]MVC 经验总结_EF
- 程序员修改他人代码经验总结
- GPS-Graph Processing System 修改源码经验总结 (四)
- fineui经验积累1之EF实体关系对应对应错误
- 20170713——第二次修改PCB经验总结
- 修改bug的经验总结