亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

除非我停止/開始調試,否則實體不會更新

除非我停止/開始調試,否則實體不會更新

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 關注
  • 169 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號