首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >实体不会更新,除非我停止/开始调试

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

Stack Overflow用户
提问于 2018-05-30 04:40:55
回答 2查看 80关注 0票数 0

我有一个DbSet实体db.Payscales

在我的网站上有一个页面,你可以在那里更新工资等级,还有一个页面,你可以从下拉菜单中选择工资等级。

更新工资标准效果很好,甚至会改变数据库中的值。但是,在下拉列表中,值不会更新。它保留了项目构建时的最后一个“已知”值。

解决这个问题的唯一方法是停止调试并重新启动站点(本质上是重建),然后再重新启动。在此之后,这些值将正确显示在下拉列表中。

如果我说得不够透彻,我很抱歉,但这似乎是一个关于实体的一般性问题,而不是代码本身的问题。

为了安全起见,下面是下拉菜单的代码:

DropDownValues.cs

代码语言:javascript
复制
public 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;
}

以及实际下拉菜单本身的代码:

代码语言:javascript
复制
@Html.DropDownListFor(modelItem => modelItem.teacher.SalaryCode , TeachersProj.Models.DropDropValues.GetPayScaleList())

编辑:

既然请求了,这里也是update方法!

PayScalesController.cs

代码语言:javascript
复制
//
// 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);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-31 03:29:27

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

当停止和重建时,这迫使一些动作进行,这就是为什么它在更新。但我休息了一下,后来又回来了,它在我没有做的情况下更新了。

票数 0
EN

Stack Overflow用户

发布于 2018-05-30 05:12:23

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

如果您想在不重新加载页面的情况下动态更新您的下拉列表,您将需要实现某种类型的Ajax轮询,调用GetPayScaleList()并设置下拉列表内容,或者实现某种SignalR推式更新(可能是过度杀伤力)。

编辑:

对你的更新逻辑试试这个:

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50592592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档