当我使用Linq选择对象时,我似乎首先得到了缓存结果。
我使用以下代码从GET请求中的数据库中获取申请人假设此数据为STATE_1
using (AdmissionsAppEntities db = new AdmissionsAppEntities())
{
// Fetch the user
ApplicationData applicant = (from a in db.ApplicationDatas
where a.userGUID == userGUID
select a).SingleOrDefault();
}
和以下代码在POST请求中保存对此记录的更改,在调用SaveChanges之后,此记录应该在STATE_2中
using (AdmissionsAppEntities db = new AdmissionsAppEntities())
{
// Fetch the user
var applicant = (from a in db.ApplicationDatas
where a.userGUID == userGUID
select a).SingleOrDefault();
if (applicant != null)
{
// Save page 1 data
...
applicant.lastUpdate = DateTime.Now;
db.Entry(applicant).State = EntityState.Modified;
DataBag.result = db.Entry(applicant).GetValidationResult();
if (DataBag.result.ValidationErrors.Count == 0)
{
db.SaveChanges();
}
}
}
if (DataBag.result.ValidationErrors.Count == 0)
{
return RedirectToAction("PageTwo");
}
数据库正确保存STATE_2(如果我使用sql检查工具,我可以在数据库中看到它),但在后续页面加载中,将检索STATE_1。
我看到人们遇到这个问题的结果很多,但没有关于如何修复它的想法。
我将RedirectToAction调用(我的所有返回)移动到using块之外,以确保调用每个DbContext的Destroy函数。似乎没有解决问题。
答案 0 :(得分:0)
人们实际上遇到了这个问题,所以我要放弃这个问题,我的问题最终是Orchard CMS缓存模块的页面。