2017-07-10 43 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中并设置它的选定值以及您的模型属性即可。