2016-06-10 55 views
-1

我有問題,看來我的模型在數據庫更改後沒有更新。我有一個列表,每個列表都有批准或拒絕的按鈕。數據庫更改後型號沒有更新

using (Html.BeginForm("LeaveProcess", "Admin", FormMethod.Post, new { @class = "form-horizontal" })) 
{ 
    <input type="text" name="LvAppId" hidden value="@item.LvAppId"> 
    <li><button type="submit" class="btn btn-link" name="AppVal" value=true data-confirm="are u sure?" >Approve</button></li> 
    <li><button type="submit" class="btn btn-link" name="AppVal" value=false >Reject</button></li> 
} 

當我按批准或拒絕按鈕時,提交按鈕的值去控制器

[HttpPost] 
public ActionResult LeaveProcess(string LvAppId, bool AppVal) 
{ 
    DataChange.UpdateStatusFromAdmin(LvAppId, AppVal); 
    TempData["AlertMessage"] = "Your Action Has Been Processed"; 
    return RedirectToAction("Index"); 
} 

和更新數據庫列到「批准」或「拒絕」。

public static void UpdateStatusFromAdmin(string LvAppId, bool AppVal) 
{ 
    if (AppVal == true) 
    { 
     db.Database.ExecuteSqlCommand("UPDATE LeaveApps SET Status='Approved' WHERE LvAppId={0}", LvAppId); 
    } 
    else 
    { 
     db.Database.ExecuteSqlCommand("UPDATE LeaveApps SET Status='Rejected' WHERE LvAppId={0}", LvAppId); 
    } 
} 

數據庫進行更新(與SSMS檢查的話),但是當我重新加載頁面,價值仍然沒有更新,我必須重新啓動Visual Studio中,使其更新調試,我應該怎麼辦?謝謝

+0

你是如何管理你的數據庫上下文的生命週期?你是否在做類似於:使用(var db = new DatabaseContext()){//在此處執行數據訪問}請參閱:https://msdn.microsoft.com/en-gb/data/jj729737.aspx – 2016-06-10 09:04:36

+0

嗯,我使用它像這樣: private static UserContext db = new UserContext();然後調用它: var Employee = db.Employee.SqlQuery 這是錯的嗎?和我的情況有什麼關係? – Fimblutterr

+1

如果您確信查詢是正確的,並且您可以看到使用ssms對後端進行的更改,但這些更改未反映在您的應用中。我認爲這是一個很好的跡象表明,上下文。它看起來像你沒有像上一個註釋那樣正確處理上下文中的數據訪問,並且鏈接會自動處理它......如果這樣不能解決你的問題,我會聚焦在您的查詢 – 2016-06-10 09:39:08

回答

1

但這些變化並未反映在您的應用中。我認爲這是一個很好的跡象表明上下文有問題。

從你的代碼看起來好像你沒有正確處理上下文。

結束語using語句內部數據訪問,像這樣:

using(var db = new DatabaseContext()) 
{ 
    // perform data access here 
} 

會自動處理掉吧......

https://msdn.microsoft.com/en-gb/data/jj729737.aspx

如果不解決你的問題我然後專注於您的查詢

0

除了將您的值寫入數據庫,你什麼都不做。

創建模型的對象並調用您的視圖。

var model = new YourModel 
{ 
    LvAppId = lvAppId, 
    AppVal = appVal 
}; 

return View("Index", model); 

否則,您必須對數據庫的調用。如果你有信心,查詢是正確的,你可以看到的變化正在使用SSMS到後端做,讓您的最新值