数据库更改后模型未更新

时间:2016-06-10 08:55:10

标签: asp.net-mvc

我有问题,似乎我的模型在数据库更改后没有更新。我有一个列表,每个列表都有批准或拒绝的按钮。

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

并将数据库列更新为&#34;已批准&#34;或&#34;拒绝&#34;。

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中重新启动调试以使其更新,我该怎么办?感谢

2 个答案:

答案 0 :(得分:1)

如果您确信查询是正确的,并且您可以看到使用ssms对后端进行的更改,但更改未反映在您的应用中..我认为这是一个很好的迹象表明存在上下文存在问题。

从您的代码中看起来您似乎没有正确处理上下文。

将数据访问权限包含在using语句中,如下所示:

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

会自动处理它......

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

如果这不能解决您的问题,我会专注于您的查询

答案 1 :(得分:0)

除了将值写入数据库之外,您不会对它们执行任何操作。

创建模型的对象并调用您的视图。

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

return View("Index", model);

否则,您必须调用数据库以获取最新值