我有 2 个项目 - 一个包含 EDM Entity Framework 模型的类库和一个单独的 ASP.NET MVC 项目。
我在如何使用 MVC 编辑和保存对实体的更改时遇到了问题。在我的 Controller 中,我有:
public class UserController : Controller
{
public ActionResult Edit(int id)
{
var rep = new UserRepository();
var user = rep.GetById(id);
return View(user);
}
[HttpPost]
public ActionResult Edit(User user)
{
var rep = new UserRepository();
rep.Update(user);
return View(user);
}
}
我的
UserRepository
有一个像这样的更新方法:public void Update(User user)
{
using (var context = new PDS_FMPEntities())
{
context.Users.Attach(testUser);
context.ObjectStateManager.ChangeObjectState(testUser, EntityState.Modified);
context.SaveChanges();
}
}
现在,当我在编辑用户页面上单击“保存”时,参数
user
仅包含两个填充值:Id 和 FirstName。我认为这是因为我只在 View 中显示这两个属性。我的问题是,如果我要更新用户的名字,然后想保存它,我该怎么办另一个
User
未在 View 中显示的属性,因为它们现在在 user
中包含 0 或 NULL 值目的?我已经阅读了很多关于使用 stub 实体的内容,但我的进展并不快,因为我见过的示例都没有实际工作。即我不断收到 EntityKey 相关的异常。
有人能给我指出一个很好的教程/示例,说明如何使用由 MVC 前端调用的存储库类来更新 EF 4 实体吗?
最佳答案
我会从数据库中检索用户并更新该实体。 EF 不能只是神奇地知道哪些值应该被修改,哪些不应该被修改。
如果您担心并发问题,您需要将时间戳存储在 View 中 - 通常作为隐藏的表单值。
关于asp.net-mvc-3 - 如何在 ASP.NET MVC 3 中更新 EF 4 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4667621/