在用ef add一條記錄時(shí)可能會(huì)遇到如下圖片的問題,有一個(gè)描述描述的非常正確:
“經(jīng)過多次編寫代碼驗(yàn)證忿峻,終于明白炭菌,使用EF更新數(shù)據(jù)時(shí),如果要更新的對(duì)象有相關(guān)的對(duì)象(換句話說黑低,就是要更新的表有主外鍵關(guān)系),這些對(duì)象必須來自同一個(gè)IEntityChangeTracker 蕾管。
而我的問題就出在user.dmRoleReference.Value=RoleManager.GetRoleById(roleId); 這里,在RoleManager.GetRoleById(roleId)方法中的實(shí)體對(duì)象和UserManager.Add方法中使用的實(shí)體對(duì)象不是同一個(gè)對(duì)象旭蠕,也就產(chǎn)生了不同的IEntityChangeTracker 實(shí)例旷坦,因此出現(xiàn)本文所說的錯(cuò)誤∑旆遥”
(>ref:http://blog.csdn.net/sb1ue/article/details/7024888)
Paste_Image.png
所以 A表所要更新的字段有B表時(shí)(假設(shè)A表更新字段有一個(gè)字段是shift_id疮丛,B表是shift)辆它,將A表已經(jīng)賦值的shift通過B表的查詢查詢到新的shift傳給A表
Paste_Image.png
即解決了問題