如何在ASP.NET MVC中获取更新的旧实体值

时间:2016-12-29 06:38:06

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

我有一个简单的MVC 5应用程序,在我的控制器中,我想知道在调用db.SaveChanges()之前如何从数据库访问当前数据。我有以下代码:

// GET:
public ActionResult Edit(int id)
{
    Product product = db.Products.Find(id);
    return View(product);
}

// POST:
[HttpPost]
public ActionResult Edit([Bind(Include = "id,title,content,price)] Product product)
{
    /* How to access old value from database here? */

    db.Entry(product).State = EntityState.Modified;
    db.SaveChanges();
}

如果我product.title它正在检索新值,我想在保存之前访问旧值。

我在此链接中尝试了接受的答案:How to access old entity value in ASP.NET Entity Framework但它对我没有用。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

// POST:
[HttpPost]
public ActionResult Edit([Bind(Include = "id,title,content,price)] Product product)
{
    var original_data = db.Products.AsNoTracking().Where(P => P.id == product.id).FirstOrDefault();

    /* Use original_data.title here */

    db.Entry(product).State = EntityState.Modified;
    db.SaveChanges();
}