我正在尝试编辑网页上的项目但是我不断收到此错误消息:无法确定类型为“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);
}
答案 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]
属性