如何在EF中正确更新模型实体实例?

时间:2011-04-18 12:38:03

标签: c# entity-framework

2 个答案:

答案 0 :(得分:1)

您可以使用TryUpdateModel方法

  

使用控制器当前值提供程序中的值和包含的属性更新指定的模型实例。

[HttpPost]
public ActionResult Edit(TableA formdata)
{
    if (ModelState.IsValid)
    {
        TableA temp = myDB.TableA.First(a=>a.Id == formdata.Id);
        if (TryUpdateModel<TableA>(temp))
        {
            myDB.SaveChanges();
            return RedirectToAction("Index");
        }
    }

    return View();
}

最好在调用Controller.TryUpdateModel Method (TModel, String[])时阻止您不想编辑的属性在发布之前添加到表单中。这包括您不希望表单发布的ID或其他字段。

答案 1 :(得分:1)

使用ie AutoMapper你可以像这样编写它(可能必须设置为限制对象与你想复制的属性之间的映射):

[HttpPost]
public ActionResult Edit(TableA formdata)
{
    TableA temp = myDB.TableA.First(a=>a.Id == formdata.Id);
    temp.TableB = myDB.TableB.First(a => a.Id == formdata.TableB.Id);

    AutoMapper.Mapper.Map(formdata, temp);
    myDB.SaveChanges();
    return RedirectToAction("Index");
}