2016-06-10 4 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), но когда я перезагрузить страницу, значение по-прежнему не обновляется, и я должен перезапустить отладку в визуальной студии, чтобы сделать его обновленным, что я должен делать? Thanks

+0

Как вы управляете жизненным циклом своей базы данных? вы делаете что-то вроде: using (var db = new DatabaseContext()) {// выполняем доступ к данным здесь} см. https://msdn.microsoft.com/en-gb/data/jj729737.aspx –

+0

Хм я использую его например: private static UserContext db = new UserContext(); , а затем называть его следующим образом: var Employee = db.Employee.SqlQuery (strquery, Convert.ToInt32 (EmpId)). FirstOrDefault(); - это неправильно? и как это связано с моим делом? – Fimblutterr

+1

Если вы уверены, что запрос верен, и вы можете видеть изменения, внесенные в бэкэнд с помощью ssms, но изменения не отражаются в вашем приложении. Я думаю, что это хороший признак того, что есть проблема с контекст. Похоже, что вы не избавляетесь от контекста, должным образом обертывающего ваш доступ к данным внутри оператора using, как в предыдущем комментарии, и ссылка автоматически удалит его ... если это не решит вашу проблему, я бы тогда сосредоточил по вашему запросу –

ответ

1

Если вы уверены, что этот запрос является правильным, и вы можете видеть изменения, которые вносятся в бэкэндом с помощью SSMS, но изменения не отражаются в вашем приложении. Я думаю, что это хороший признак того, что есть проблема с контекстом.

Из вашего кода, похоже, что вы неправильно распоряжаетесь контекстом.

Обертывание ваш доступ к данным внутри, используя заявление следующим образом:

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

будет автоматически утилизировать ...

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

Если это не решит вашу проблему I» d затем сосредоточьтесь на своем запросе

0

Помимо записи ваших значений в базу данных, вы ничего не делаете с ними.

Создайте объект своей модели и позвоните по своему виду.

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

return View("Index", model); 

В противном случае вы должны сделать вызов к базе данных, чтобы получить ваши самые последние значения