经验总结18--EF改动关系,多对多
2017-05-24 11:08
127 查看
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修改关系,多对多
- 经验总结14--EF策略和数据迁移的数据初始化
- Windows Phone开发经验谈(18)-总结两种滚动条到底部加载数据的方法
- 经验总结27--EF多对多额外内容
- 和各种诡异 Bug 打交道 13 年,我总结了 18 个经验
- 和各种诡异 Bug 打交道 13 年,我总结了 18 个经验
- 和各种诡异 Bug 打交道 13 年,我总结了 18 条经验
- 经验总结16--EF局部更新数据
- 和各种诡异 Bug 打交道 13 年,我总结了 18 个经验
- 基于Metronic的Bootstrap开发框架经验总结(18)-- 在代码生成工具Database2Sharp中集成对Bootstrap-table插件的分页及排序支持
- [转]MVC 经验总结_EF
- 和各种诡异 Bug 打交道 13 年,我总结了 18 个经验
- NesC学习经验总结:第四篇 commands和events的用法与provide和use的关系
- fineui经验积累1之EF实体关系对应对应错误
- 和各种诡异 Bug 打交道 13 年,我总结了 18 个经验
- GPS-Graph Processing System 改动源代码经验总结 (四)
- arcims开发经验总结(3) (杂谈1)
- 转载:TonyBaoBao:在.NET中调用Oracle9i存储过程经验总结
- 关于解决WebSphere服务不能启动问题的几点经验总结
- 在.NET中调用Oracle9i存储过程经验总结