我在基本層面上很難理解如何在實體框架中管理一對多關係。在我的應用程序中,我有兩個表格,DISPLAY_MASTER
和DISPLAY_ITEMS
。他們的關係就像這樣:如何在Entity Framework中管理一對多關係?
DISPLAY_MASTER.DISPLAY_ID 1 -----> * DISPLAY_ITEMS.DISPLAY_ID
實體框架組織這真的直觀。我留下了一個強類型的DISPLAY_MASTER
對象,該對象具有名爲DISPLAY_ITEMS
的ICollection
屬性。
我的困惑在於如何將DISPLAY_ITEMS
集合保存回數據庫。在我的應用程序中,我正在讀取DISPLAY_ITEMS
的所有DISPLAY_MASTER
,使用LINQ將其轉換爲名爲_displayItems
的List<DISPLAY_ITEMS>
對象。然後綁定到DataGrid
以使用MVVM進行編輯。用戶可以編輯現有的DISPLAY_ITEMS
,刪除現有的DISPLAY_ITEMS
,或使用DataGrid
添加新的DISPLAY_ITEMS
。我的裝訂完美無缺,這些更改反映在_displayItems
中。一旦節省時間,我就會停止對自己的代碼感到自信。當用戶點擊保存我設置DISPLAY_MASTER
的ICollection
像這樣:
_displayMaster.DISPLAY_ITEMS = _displayItems;
這是正確的方式來工作的一個實體框架集?或者我應該將DataGrid
直接綁定到_displayMaster.DISPLAY_ITEMS
對象?或者其他一些方法?我沒有信心的原因是因爲,如果我嘗試驗證使用_displayMaster.DISPLAY_ITEMS
實體:
DbEntityValidationResult validationResults = _context.Entry(_displayMaster.DISPLAY_ITEMS).GetValidationResult();
我得到一個錯誤說「列表1」是不是集合,這顯然看起來不正確的部分。
任何意見或指導,將不勝感激。
謝謝。
我確實有第二種選擇,但是我無法直接綁定到實體,因爲它是ICollection類型。當我去編輯'DataGrid'中的記錄時,出現錯誤'EditItem'不可用。我在這裏錯過了什麼嗎? –
@ user3043546:我建議你問一個關於這個後續問題的單獨問題。這聽起來更像是一個WPF綁定主題,而不是EF問題。我在這裏幫不了你,我對WPF不夠熟悉。 – Slauma
感謝您的反饋,您是對的。順便說一下,我做了更多的研究,你的第二個解決方案是要走的路。 –