經驗總結18--EF修改關係,多對多

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應該是可以實現的。

有其他方法的朋友可以分享下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章