为了账号安全,请及时绑定邮箱和手机立即绑定

除非我停止/开始调试,否则实体不会更新

除非我停止/开始调试,否则实体不会更新

C#
精慕HU 2021-07-02 17:23:36
我有一个 DbSet 实体 db.Payscales我的网站上有一个页面,您可以在其中更新薪级表,还有一个页面可让您从下拉菜单中选择薪级表。更新工资表效果很好,甚至会改变数据库中的值。但是,在下拉列表中,值不会更新。它保留项目构建时的最后一个“已知”值。解决这个问题的唯一方法是停止调试并再次启动站点(基本上是重建),然后再次启动它。在此之后,这些值在下拉列表中正确显示。如果我不够彻底,我深表歉意,但这似乎是一个关于实体的一般性问题,而不是代码本身的问题。为了安全起见,这里是下拉菜单的代码:DropDownValues.cspublic static List<SelectListItem> GetPayScaleList(){    List<SelectListItem> ls = new List<SelectListItem>();    ls.Add(new SelectListItem() { Text = "", Value = "" });    foreach (var temp in db.PayScales)    {        ls.Add(new SelectListItem() { Text = temp.Salary + "|" + temp.BaseGross, Value = temp.Salary.ToString() });    }    return ls;}以及实际下拉菜单本身的代码:@Html.DropDownListFor(modelItem => modelItem.teacher.SalaryCode , TeachersProj.Models.DropDropValues.GetPayScaleList())编辑:由于要求,这里也是更新方法!PayScalesController.cs//// POST: /PayScales/Edit/5[HttpPost][ValidateAntiForgeryToken]public ActionResult Edit(PayScale payscale){    if (ModelState.IsValid)    {        db.Entry(payscale).State = EntityState.Modified;        db.SaveChanges();        return RedirectToAction("Index");    }    return View(payscale);}
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

在我看来,您只需要在数据库更新后刷新页面即可。由于您使用@Html指令(我假设这是一个基于此的 MVC 项目)来获取下拉列表,因此在加载页面时定义列表的内容。在您重新加载页面之前,更新数据库不会反映在 UI 中。


如果您想在不重新加载页面的情况下动态更新下拉列表,则需要实现某种调用GetPayScaleList()和设置下拉列表内容的 Ajax 轮询,或者实现某种 SignalR 推送式更新(可能有点矫枉过正)。


编辑:


为您的更新逻辑试试这个:


public ActionResult Edit(PayScale payscale)

{

    if (ModelState.IsValid)

    {

        var existingEntry = db.Find(payscale);

        if(existingEntry != null)

        {

             db.Entry(existingEntry).CurrentValues.SetValues(payscale);

             db.SaveChanges();

        }

        else

        {

             //Handle updating a missing record how you want

        }

        return RedirectToAction("Index");

    }

    return View(payscale);

}


查看完整回答
反对 回复 2021-07-11
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

原来实体 WAS 正在更新,由于某种原因,更新需要一个多小时。

在停止和重建时,这会强制执行某些操作,这就是它进行更新的原因。但是我休息了一会儿又回来了,它在我没有做的情况下更新了。


查看完整回答
反对 回复 2021-07-11
  • 2 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信