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

C# 如何在ASP.NET MVC中更新时获取旧实体值,c#,asp.net-mvc,entity-framework,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 = "i

我有一个简单的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
操作,它正在检索新值,我希望在保存之前访问旧值

我在这个链接中尝试了公认的答案:但它对我无效。

你可以做:

// 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();
}
你可以做:

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