Сущность не обновляется, пока я не остановлю / не начну отладку - PullRequest
0 голосов
/ 29 мая 2018

У меня есть объект DbSet db.Payscales

На моем сайте есть страница, где вы можете обновить шкалы выплат, и есть страница, где вы выбираете шкалы выплат из выпадающего меню.

Обновление шкал выплат работает отлично, и даже изменит значения в базе данных.Однако в раскрывающемся списке значения не обновляются.Он сохраняет последнее значение, «известное» при создании проекта.

Единственный способ исправить это - прекратить отладку и запустить сайт заново (по сути, перестроить) и запустить его снова.После этого значения правильно отображаются в раскрывающемся списке.

Я прошу прощения, если я недостаточно подробен, но это, скорее, более общий вопрос о сущностях, чем вопрос с самим кодом.

На всякий случай вот код для выпадающего меню:

DropDownValues.cs

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;
}

и код самого фактического выпадающего меню:

@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 ]

0 голосов
/ 30 мая 2018

Отключает обновление сущности WAS, по какой-то причине обновление занимает более часа.

При остановке и перестройке это заставило выполнить какое-то действие, и именно поэтому оно обновлялось.Но я взял перерыв и вернулся позже, и он был обновлен без моего участия.

0 голосов
/ 30 мая 2018

Мне кажется, что вам просто нужно обновить страницу после обновления базы данных.Поскольку вы используете директиву @Html (я предполагаю, что это проект MVC, основанный на этом), чтобы получить выпадающий список, содержимое списка определяется при загрузке страницы.Обновление базы данных не будет отображаться в пользовательском интерфейсе до тех пор, пока вы не перезагрузите страницу.

Если вы хотите динамически обновлять раскрывающийся список без перезагрузки страницы, вам нужно будет реализовать своего рода опрос Ajax, который вызывает GetPayScaleList()и устанавливает содержимое раскрывающегося списка или реализует какое-либо обновление в стиле pushalR (вероятно, излишнее).

Редактировать:

Попробуйте использовать логику обновления:

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);
}
...