簡體   English   中英

實體框架:一對多關系

[英]Entity Framework: One to Many relationship

我有一個關於Entity Framework模型關系的設計問題

我在edmx中有這個模型 EF圖

業務規則:

Participant可以有多個Roles因此我創建了一個關系表ParticipantRoles ,它在ParticipantRole表上具有1對多的關系

問題 :為了獲得參與者的角色價值,我必須深入了解Participant->ParticipantRole->Role (參見下面的JSON輸出)

在此輸入圖像描述

問題:

在EF中,如何設計表關系以繞過ParticipantsRole表。 我想訪問像Particant.Role這樣的角色而不是Participant.ParticipantsRole.Role

你說Participant可以擁有多個Role 當然, Role可以有多個Participant 所以基本上這是一個多對多的關聯。

當聯結表只有兩個外鍵時,實體框架將只映射純多對多關聯(沒有連接類)。 在您的情況下,如果表ParticipantsRole 在生成模型時只有一個由ParticipantIdRoleId組成的主鍵,則不會創建類ParticipantsRole 您可以將Participant.RolesRole.Participants作為導航屬性。

但是,該模型已使用ParticipantsRole生成,您想要擺脫它。 (或者不,我會回到那個)。

這是你可以做的:

  • 從類圖中刪除ParticipantRoles
  • 修改數據庫表ParticipantRoles ,使其只有兩個FK列,它們都構成主鍵。
  • 從數據庫更新模型,然后在“添加”選項卡中選擇ParticipantsRole

這應該為您提供一個純粹的多對多關聯的模型。

但是,在執行此操作之前請三思而后行。 M2m協會有一種演變為1-m-1關聯的方式(正如你現在所做的那樣)。 原因是遲早需要記錄關於關聯的數據,因此聯結表必須具有更多字段並且不再是純聯結表。 在您的情況下,我可以想象一天參與者的角色必須具有固定的訂單,或者標記為默認的一個。 在生產環境中將m2m關聯更改為1-m-1可能是一次重大改革。 - 需要考慮的事情......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM