2017-07-10 46 views
0

我正在爲我的ASP.NET MVC項目中使用的代碼優先EF構建POCO類。我試圖根據this answer爲其中一個字段創建下拉列表,但EF在嘗試添加遷移時發生了錯誤。EntityFramework對System.Web.Mvc.SelectList不滿意

更新:從POCO中刪除了SelectListItems,但仍然是EF錯誤。在POCO的

相關片段:

using System.Web.Mvc; 

public class Organization 
{ 
    [DisplayName("Bank Name")] 
    [Required(ErrorMessage = "Bank Name is required.")] 
    public string AccountBank { get; set; } 

    public IEnumerable<SelectListItem> Banks { get; set; } 
} 

EF錯誤:

Could not load file or assembly 'System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

+0

您通常不希望將SelectListItem實體存儲在數據庫中。相反,您應該有一個銀行實體,並且只在UI中創建SelectListItems。 –

+1

爲什麼要將查看邏輯添加到EF POCO中? –

+1

'SelectListItem'是用於UI的。它不應該存儲在你的數據庫中,也不應該存在你的POCO中。您的數據庫(=數據模型=業務模型)應該存儲業務對象。 UI(視圖和/或控制器)應該將業務對象轉換爲視圖可以使用的格式,即選擇列表項。 –

回答

2

時System.web.mvc您在項目包括組裝不匹配的版本會出現此錯誤您在配置文件中明確定義的數字。確保版本匹配。

另外,你只是想通過視圖中的下拉列表獲取銀行名稱?如果你是這樣的話,那麼通過使選擇列表成爲模型的一部分,就會增加模型的不必要的複雜性。只需將該列表加載到viewbag中並設置它的選定值以及您的模型屬性即可。