更新执行没有错误,但不更新数据库

时间:2014-05-20 13:48:57

标签: c# asp.net-mvc entity-framework

所以我还在教自己MVC,我现在正在尝试更新用户记录。

我有以下代码:

// The Controller:
    [HttpPost]
    public ActionResult Edit(User model)
    {
        if (ModelState.IsValid)
        {
            User u = new User();
            u.Update(model);
        }

        return RedirectToAction("Index", "Users");
    }

// The Model:
    public void Update(User u)
    {
        var user = GetUserById(u.UserId);
        db.Entry(user).State = EntityState.Modified;
        db.SaveChanges();
    }

此代码执行完全正常,但实际上并不更新数据库。

以下值似乎是数据库中的值,而不是View中的值。为什么会这样,我无法理解。

Debugging

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您可能忘记更新自己的字段了。 在这种情况下,您可以使用TryUpdateModel();更新字段。 你应该有这样的东西:

[HttpPost]
public ActionResult Edit(User model)
{
    if (ModelState.IsValid)
    {
        User u = new User();
        u.Update(model);
    }

    return RedirectToAction("Index", "Users");
}

public void Update(User u)
{
    var user = GetUserById(u.UserId);
    TryUpdateModel(user); // You forgot this 
    db.Entry(user).State = EntityState.Modified;
    db.SaveChanges();
}

答案 1 :(得分:0)

您正在从Controller调用以下代码并传入从视图模型生成的用户。

public void Update(User u)
    {
        var user = GetUserById(u.UserId);
        db.Entry(user).State = EntityState.Modified;
        db.SaveChanges();
    }

但是,上面的代码尝试根据用户的ID检索用户,然后只是执行更新,而不实际更改任何数据。

相关问题