Asp.net mvc 实体框架-无法将标识密钥发送到控制器进行更新
我正在成功地将一个实体保存到我的数据库中,并获取数据库生成的PK IDAsp.net mvc 实体框架-无法将标识密钥发送到控制器进行更新,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我正在成功地将一个实体保存到我的数据库中,并获取数据库生成的PK ID repository.InsertOrUpdate(viewModel.Entity); repository.Save(); viewModel.Entity.ID // This property will now have the ID that the database has generated. 所以一切都很好 但是,当我将Veiwmodel从控制器发送回视图时 return View(viewMode
repository.InsertOrUpdate(viewModel.Entity);
repository.Save();
viewModel.Entity.ID // This property will now have the ID that the database has generated.
所以一切都很好
但是,当我将Veiwmodel从控制器发送回视图时
return View(viewModel);
和使用
@Html.TextBoxFor(m => m.Entity.Id)
ID显示为0。因此,当我尝试发布更新时,EF认为这是一条新记录,使用以下语法
public void InsertOrUpdate(Entity entity)
{
if (entity.Id == default(int))
{
entity.Created = DateTime.Now;
entity.LastEdit = DateTime.Now;
Context.T.Add(entity);
}
else
{
entity.LastEdit = DateTime.Now;
Context.Entry(entity).State = System.Data.Entity.EntityState.Modified;
}
}
是否有任何明显的错误,我无法将创建的ID获取到视图
******编辑******
奇怪的是,使用
@Html.TextBoxFor(m => m.Entity.Id)
将显示0,如上所述。然而,如果我使用
@Html.DisplayFor(m => m.Entity.Id)
它将显示正确的ID值。。(为什么?)
但当我按下send时,ActionResult post仍然返回0
感谢您仍然可以通过viewData或TempData发送实体通过viewmodel发送实体信息,因为实体中的所有其他属性都在视图上正确呈现,只是ID永远不会正确。您确定插入后获得了ID吗?是的,我在返回视图(viewModel)上使用了一个断点,ID确实具有正确的ID。将检查链接,谢谢,等等,我刚刚注意到您正在调用
m.Entity.ID
我想它是m.ID