【问题标题】:MVC3 Linq updating two tables with data from one modelMVC3 Linq 使用来自一个模型的数据更新两个表
【发布时间】:2011-12-07 04:27:40
【问题描述】:

使用数据库优先方法和 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);
} 

【问题讨论】:

  • 你应该选择 EF。并且引用臭名昭著的“没有信息,对于 DEA 联邦特工来说,因为我是公然的......”
  • @DougChamberlain 谢谢,不太清楚 Notorious 会如何让我度过难关,但你试过了。
  • 我不确定我是否理解。你想在你的 rx 表中更新什么?我没有看到任何要更新的数据。
  • @MystereMan 填充通过外键“Rx_ID”与 rx 相关,当我在填充表中更新填充时,我将 fill.status 更新为“填充”,并且在 rx 表中我想要更新列/属性 rx.fill 中相关 rx 的可用填充数

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


【解决方案1】:

根据您的评论,并假设 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 才能获得所需的正确记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2022-12-18
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多