我正在尋找一個體面的模式的下拉列表選擇和POCO EF請選擇持久性的建議。在ASP.NET MVC解決方案中使用實體框架保存下拉列表選擇
我在我的視圖模型中有一個IEnumerable<Country>
的列表,其中Country是通過EF加載的POCO。視圖模型上有一個Address屬性,該屬性在Country屬性上獲取當前或用戶選定的值。使用默認的模型綁定器提供我與填充Address.Country視圖模型
Html.DropDownListFor(model => model.Address.Country.Id, new SelectList(Model.Countries,"Id","Name",model.Address.Country.Id)
到目前爲止好,這一切的回傳作品:在視圖裏我通過Html.DropdownListFor(顯示這些)這樣。然而,Address.Country當然只填充了默認模型綁定的Id字段。
試圖通過EF發送地址更新回數據庫爆炸,因爲這被視爲一個新的對象,沒有它的全部對象圖加載,只有Id集。
現在我可以通過從數據庫中將完整的Country對象加載到Address.Country屬性上,然後在基於所選ID進行保存之前解決此問題。但是,除了簡單的對象圖之外,對於任何事情來說,這看起來都很困難。
我能想到的最「優雅」的解決方案是國家的自定義模型綁定器,但是那樣會要求模型綁定器知道用於檢索完全EF對象的存儲庫,這對我來說看起來並不正確。我還必須對下拉列表中使用的所有其他實體重複此操作。
希望這是有道理的,任何有關其他人如何做這個反饋意見。
我知道這是舊的,但有沒有人得到這個解決方案,而不必聲明CountryID以及Country屬性? – 2012-12-28 01:06:20