EF5報錯 無法確定“XXX”關係的主體端。添加的多個實體可能主鍵相同

來源:互聯網
上載者:User

標籤: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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.