Entity Framework Code First:處理指向同一表的多個外鍵
在 Entity Framework Core 中,對實體間關係進行建模至關重要。正如您遇到的那樣,創建具有指向同一表多個外鍵的模型可能會導致異常。
在您的示例中,您定義了 Team 和 Match 實體,目的是捕獲團隊和比賽之間的關係,其中一場比賽涉及兩支球隊,一支主隊和一支客隊。但是,您的初始方法會觸發循環引用異常。
為了解決此問題,必須利用 HasRequired() 和 WithMany() 方法以及 OnModelCreating() 中的流暢 API 配置。這是一個更新後的模型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
在此模型中:
OnDelete(DeleteBehavior.Restrict)
(或 DeleteBehavior.NoAction
) 以防止由於自引用多對多關係導致的級聯刪除。 通過這種方法,您可以成功地在 EF Core 模型中建立指向同一表的多個外鍵。 注意,WillCascadeOnDelete(false)
在較新的 EF Core 版本中已被棄用,建議使用 OnDelete(DeleteBehavior.Restrict)
或 OnDelete(DeleteBehavior.NoAction)
。 Restrict
會阻止刪除操作,除非相關記錄不存在;NoAction
會忽略刪除操作,這取決於數據庫提供程序的行為。 選擇哪個取決於您的具體需求。
以上是如何首先在實體框架代碼中處理多個外國鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!