使用Entity Framework和ASP.NET MVC更新实体的单个属性

时间:2011-10-06 10:53:24

标签: asp.net-mvc entity-framework

我正在尝试在ASP.NET MVC Web应用程序中使用Entity Framework。

假设我有一个实体“人”,带有一些字面上的细节。

我的Web应用程序有一个视图,使用Ajax,我可以逐个更改我的详细信息。

例如,我只能使用Ajax帖子更改我的实体的“名称”。

在我的“人”实体中,在我的控制器中实现此更新的方法的最佳做法是什么? 我想创建一个通用的“更新”方法,而不是每个单个属性的特定方法。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

public ActionResult Update(int id, string propertyName, object propertyValue)
{
    using(var ctx = new Db())
    {
       var person = ctx.People.First(n => n.Id == id);
       Type t = person.GetType();
       PropertyInfo prop = t.GetProperty(propertyName);
       prop.SetValue(person, propertyValue, null);
       ctx.SaveChanges();
    }
    return Json(new { Success = true });
}

答案 1 :(得分:2)

你为什么要那样做?只需传递整个实体并进行更新,无论如何它都在您的视图模型中。

        [HttpPost]
        public ActionResult Edit(People people)
        {
            if (ModelState.IsValid)
            {
                db.Entry(people).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(people);
        }