標籤:style blog http tar color com
情景:使用者表和訂單表是一對多的關係,即 一個 Userinfo 對應對應有 多個 Order表
如果我在EF中,先建立一個使用者,然後建立3個訂單,然後關聯這1個使用者和3個訂單的關係,毫無問題.
但是:當我如果想建立2個使用者,6個訂單,並且分別去關聯的時候,就提示報錯
無法確定“XXX”關係的主體端。添加的多個實體可能主鍵相同
原因可能是:
當我們添加2個使用者的時候,2個使用者的id主鍵都是0,這樣當儲存到資料庫的時候,就報錯了. (疑問:但是訂單1到6,他們的id也是主鍵,也是0,為嘛就不報錯呢?)
解決方案
1:要麼你的userinfo主表裡面的資料,一個一個的添加.例如先添加使用者1,然後儲存使用者1和訂單123的關係.然後建立使用者2,然後儲存使用者2和訂單456的關係
2:給UserInfo添加的時候,設定一個假的Id, 例如 Userinfo1 的id設定為1,Userinfo2的id 設定為2,這是我們自己手動設定的假的id,然後EF在關聯 使用者1和訂單123,使用者2和訂單456的時候,由於發現使用者1和使用者2的id主鍵是不同的,所以就可以判斷為是2個不同的主體端了.
實際EF執行到資料庫的時候,由於ID是主鍵,所以EF是不會理會我們自己手動建立的假的id主鍵的.
3:相當於是1的改版,我們先把主題端的使用者1和使用者2給儲存到資料庫,這樣他們的id就會不一致,就不會提示 “添加的多個實體可能主鍵相同了”
參考資料
http://stackoverflow.com/questions/8530581/multiple-added-entities-may-have-the-same-primary-key-in-entity-framework
http://www.cnblogs.com/tukzer/archive/2013/04/20/3033326.html