如何在 ASP.NET MVC 3 中更新 EF 4 实体?

2023-12-22

我有 2 个项目 - 一个包含 EDM 实体框架模型的类库和一个单独的 ASP.NET MVC 项目。

我对如何使用 MVC 编辑和保存对实体的更改感到有疑问。在我的控制器中我有:

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);
        }
    }

My UserRepository有一个像这样的 Update 方法:

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。我认为这是因为我只在视图中显示这两个属性。

我的问题是,如果我要更新用户的名字,然后想保存它,我该怎么处理其他用户的名字User视图中未显示的属性,因为它们现在在视图中包含 0 或 NULL 值user object?

我已经阅读了很多有关使用存根实体的内容,但我一无所获,因为我见过的示例都没有真正起作用。即我不断收到 EntityKey 相关的异常。

有人可以向我指出一个关于如何使用由 MVC 前端调用的存储库类更新 EF 4 实体的好教程/示例吗?


我将从数据库中检索用户并更新该实体。 EF 不能神奇地知道哪些值应该修改,哪些不应该修改。

如果您担心并发问题,则需要将时间戳存储在视图中 - 通常作为隐藏的表单值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ASP.NET MVC 3 中更新 EF 4 实体? 的相关文章

随机推荐