Linq to SQL获取缓存结果

时间:2013-12-12 15:52:10

标签: c# sql linq asp.net-mvc-4 caching

当我使用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。

我看到人们遇到这个问题的结果很多,但没有关于如何修复它的想法。

更新1

我将RedirectToAction调用(我的所有返回)移动到using块之外,以确保调用每个DbContext的Destroy函数。似乎没有解决问题。

1 个答案:

答案 0 :(得分:0)

人们实际上遇到了这个问题,所以我要放弃这个问题,我的问题最终是Orchard CMS缓存模块的页面。