MVC3 Linq使用来自一个模型的数据更新两个表

时间:2011-12-06 16:22:09

标签: database linq asp.net-mvc-3 entity-framework-4

使用数据库第一种方法和Linq,如果我的视图有一个强设置填充模型,并且下面的代码传递了编辑的填充并更新了我在数据库中的填充表,有没有办法更新相关的rx表还有没有必要创建一个可以访问填充和rxs的视图模型?我是Linq的新手,到目前为止还没能使它成功。

[HttpPost]
public ActionResult Edit(Fill fill)
{
    if (ModelState.IsValid)
    {
        db.Fills.Attach(fill);
        db.ObjectStateManager.ChangeObjectState(fill, EntityState.Modified);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    ViewBag.Rx_ID = new SelectList(db.Rxes, "Rx_ID", "DEA_Number", fill.Rx_ID);
    return View(fill);
} 

1 个答案:

答案 0 :(得分:0)

根据您的评论,并假设Fill是一个完整的对象(即包括它的记录ID和相关的导航ID),并假设您有外键和导航属性,那么您应该只能使用导航这样做的财产。

[HttpPost]
public ActionResult Edit(Fill fill)
{
    if (ModelState.IsValid)
    {
        db.Fills.Attach(fill);
        db.ObjectStateManager.ChangeObjectState(fill, EntityState.Modified);
        fill.Rx.status = "Filled"; // or whatever the status is
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    ViewBag.Rx_ID = new SelectList(db.Rxes, "Rx_ID", "DEA_Number", fill.Rx_ID);
    return View(fill);
}

以上假设Rx的填充状态为1:1,如果它是1:M,则必须使用一些linq来获得所需的正确记录。