C# 更改ASP.NET MVC模型类中的主键名称
我的模范班是:C# 更改ASP.NET MVC模型类中的主键名称,c#,asp.net-mvc,asp.net-mvc-3,entity-framework,C#,Asp.net Mvc,Asp.net Mvc 3,Entity Framework,我的模范班是: public class Contracts { public int ContractId { get; set; } public string contract { get; set; } } 添加其控制器: public ActionResult Index() { var contracts = from c in db.Contracts
public class Contracts
{
public int ContractId { get; set; }
public string contract { get; set; }
}
添加其控制器:
public ActionResult Index()
{
var contracts = from c in db.Contracts
select c;
return View(contracts.ToList());
}
强类型视图返回:
@foreach (var item in Model) {
<tr>
<td>
@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
<td>
@item.ContractId
</td>
<td>
@item.contract
</td>
</tr>
}
@foreach(模型中的变量项){
@ActionLink(“编辑”,“编辑”,新的{/*id=item.PrimaryKey*/})|
@ActionLink(“详细信息”,“详细信息”,新的{/*id=item.PrimaryKey*/})|
@ActionLink(“删除”,“删除”,新的{/*id=item.PrimaryKey*/})
@项目1.d
@项目.合同
}
最初,基表的主键称为ID。然后我将其更改为收缩,以便在外键中使用
如何设置模型主键,以便视图能够识别它
更新1:我正在使用EntityFramework 4
更新2:Brian提供的答案确实正确地手动分配了密钥。要解决我的问题,需要将表从“contract”重命名为“Contracts”。我还将该表中的“合同”字段重命名为“名称”。然后我删除了“Contracts”模型类,并将其重新创建为“Contract”。视图文件夹已重命名为Contract。我猜命名约定破坏了主键的代码识别。假设您在控制器上的操作方法如下:
public ActionResult Details(int id){
// retrieve contract and generate view
}
public ActionResult Edit(int id){
// retrive contract and generate view
}
public ActionResult Delete(int id){
// delete contract
}
@foreach (var item in Model) {
<tr>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ContractId }) |
@Html.ActionLink("Details", "Details", new { id=item.ContractId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ContractId })
</td>
<td>@item.ContractId</td>
<td>@item.contract</td>
</tr>
}
那么您的视图应该如下所示:
public ActionResult Details(int id){
// retrieve contract and generate view
}
public ActionResult Edit(int id){
// retrive contract and generate view
}
public ActionResult Delete(int id){
// delete contract
}
@foreach (var item in Model) {
<tr>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.ContractId }) |
@Html.ActionLink("Details", "Details", new { id=item.ContractId }) |
@Html.ActionLink("Delete", "Delete", new { id=item.ContractId })
</td>
<td>@item.ContractId</td>
<td>@item.contract</td>
</tr>
}
@foreach(模型中的变量项){
@ActionLink(“编辑”,“编辑”,新的{id=item.construcd})|
@ActionLink(“详细信息”,“详细信息”,新的{id=item.construcd})|
@ActionLink(“Delete”,“Delete”,new{id=item.construcd})
@项目1.d
@项目.合同
}
您的问题与MVC无关。您正在使用哪个ORM工具?Linq到SQL?EF?@Jacob-更新了我的问题-我使用的是EF 4实际上,这与MVC路由有关,与他的ORM无关,除了他使用同一类进行数据访问和视图模型这一事实。