实体类型“Microsoft.AspNetCore.Mvc.Rendering.SelectListGroup”需要定义主键

时间:2017-08-16 17:20:44

标签: asp.net entity-framework asp.net-core

.Net Core新手。

尝试实现类似于的下拉列表: MVC6 Dropdownlist of Countries

在我的模特课中我有

<td class="input-item">
<select asp-for="SiteID" asp-items="@Model.SiteList"></select>
</td>

在我的控制器中,我有:

modelBuilder.Entity<Issue>().Ignore(i => i.SiteList);

在我看来,我有:

{{1}}

当我尝试实现迁移时,出现以下错误: 实体类型“Microsoft.AspNetCore.Mvc.Rendering.SelectListGroup”需要定义主键。

我尝试忽略我的迁移命名空间:

{{1}}

但我并不完全确定我是在正确的位置做到了这一点。

2 个答案:

答案 0 :(得分:0)

为了解决这个问题,只需输入

即可
[NotMapped]

在模型.cs文件中的SelectList属性之上:

[NotMapped]
public SelectList SiteList { get; set; }

这可以防止EntityFramework将列表映射到模型。由于它不是模型数据库的一部分,因此不需要主键。

答案 1 :(得分:0)

我以前遇到过这个问题。我的问题最终是,在对控制器进行编码时,我意外地为我的视图模型生成了一个DbSet,并在List<SelectListItem>文件的底部带有ApplicationDbContext.cs[NotMapped]“修复”更像是解决问题的绷带,而不是真正解决引起错误的原因。

检查您的ApplicationDbContext.cs文件中是否有视图模型的DbSet,其中包含您的List<SelectListItem>,然后将其删除。

看起来应该像这样:
public DbSet<TodoItemViewModel> TodoItemViewModel { get; set; }