如何解决此错误:传递的主键值的数量必须与实体上定义的主键值的数量匹配

时间:2019-06-19 15:59:06

标签: c# .net model-view-controller

The error page

The index page

我正在尝试在MVC .net应用程序中编辑索引。在我更改为Mysql Server中的其他视图之前,它运行良好。

我尝试为我认为可以使用的新View更新model.edmx,但在尝试编辑时无法停止向我显示此错误。我认为这是一个映射问题,但我找不到该问题

控制器:

    public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        Graduated_Students graduates = db.Graduated_Students.Find(id);
        if (graduates == null)
        {
            return HttpNotFound();
        }
        return View(graduates);
    }

型号:

{
    public int ID { get; set; }
    public int CohortId { get; set; }
    public string Name { get; set; }
    public string FullName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string ContractStatus { get; set; }
    public string DepositStatus { get; set; }
    public string GraduationStatus { get; set; }
}

查看:

                    <td>
                        @Html.ActionLink(Resource.Profile, "Details", new { id = item.ID })
                        @Html.ActionLink(Resource.Edit, "Edit", new { id = item.ID })
                        @Html.ActionLink(Resource.Delete, "Delete", new { id = item.ID })
                    </td>

1 个答案:

答案 0 :(得分:0)

数据库视图没有主键。 Find()搜索主键,因此不能用于搜索视图。将其更改为FirstOrDefault():

Graduated_Students graduates = db.Graduated_Students.FirstOrDefault(x => x.ID == id);