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應該是可以實現的。
有其他方法的朋友可以分享下。