无法编辑网页上的项目。错误:确定类型为Asp.net MVC

时间:2018-01-04 19:32:54

标签: asp.net asp.net-mvc

我正在尝试编辑网页上的项目但是我不断收到此错误消息:无法确定类型为“com.twcl.it.isms.Models.Issue”的复合主键排序。使用ColumnAttribute(请参阅http://go.microsoft.com/fwlink/?LinkId=386388)或HasKey方法(请参阅http://go.microsoft.com/fwlink/?LinkId=386387)指定复合主键的顺序。我似乎无法弄清楚为什么我会收到错误。在数据库中,行号用作复合键。

更新 我现在收到此错误:EntityType'SelectListItem'没有定义键。定义此EntityType的键。 SelectListItems:EntityType:EntitySet'SelectListItems'基于没有定义键的类型'SelectListItem'。不确定我还应该添加什么

 [Key]

    public int lineNum { get; set; }

查看

 if (@Model.items.Count > 0)
                        {
                            foreach (var issueditem in @Model.items)
                            {
                                <tr>

                                    <td class="col-md-4">@issueditem.itemNumber</td>
                                    <td class="col-md-4">@issueditem.description</td>
                                    <td class="col-md-4">@issueditem.expense_account.getDescription</td>
                                    <td class="col-md-2">@issueditem.quantity.ToString()</td>
                                    <td class="col-md-2">@issueditem.quantityI.ToString()</td>
                                    <td class="col-md-1">@issueditem.selecteduomtext </td>
                                    <td class="col-md-1">@issueditem.price.ToString()</td>


                                    <td> @Html.ActionLink("Edit", "Edit", new { id = issueditem.lineNum}) </td>


                                </tr>
                            }

                        }

控制器

      public ActionResult Edit(string id)
    {

        Issue getIssue = db.Issues.Find(id);

        return View(getIssue);


    }

 [HttpPost]
    public ActionResult Edit(Issue issue)
    {


        if (ModelState.IsValid)

        {

            db.Entry(issue).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("IssueItem", issue);
        }


        else
        {
            ModelState.AddModelError(string.Empty, "Please make sure you have filled in all required fields.");
        }

            return View(issue);


        }

1 个答案:

答案 0 :(得分:1)

a Composite Key表示使用多个属性的组合作为实体的密钥,在这种情况下,Entity Framework需要知道密钥属性的顺序。正如异常消息中所建议的那样,您可以使用ColumnAttribute来执行此操作,如:

[Key]
[Column(Order = 1)]
public int key1 { get; set; }

[Key]
[Column(Order = 2)]
public string key2 { get; set; }

如果您只想使用lineNum作为主键,请检查您的型号并确保没有其他属性已应用[Key]属性