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

标签 asp.net-mvc-3 entity-framework-4

我有 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/

相关文章:

c# - ASP MVC 表单调用特定操作而不是重定向但更新原始页面

asp.net-mvc-3 - ASP.NET Web API Ninject 构造函数注入(inject)自定义过滤器和属性

asp.net-mvc - MVC3 插件架构建议

linq-to-sql - 从 LINQ to SQL 迁移到 Entity Framework "Code First"

asp.net-mvc-3 - MVC 中什么取代了 ClientScriptManager?

jquery - 在MVC3中使用CheckBoxFor时,如何使用JQuery仅选择CheckBox INPUT?

database - 如何使用 EF 急切加载整个数据库

c# - LINQ 生成不正确的 SQL(引用不存在的表)

c# - 这是与 Entity Framework 交互的正确方式吗?

c# - 无法将自定义值插入标识列 - Entity Framework