2016-06-10 49 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到后端做,让您的最新值