实体框架似乎在缓存数据

本文关键字:缓存 数据 框架 实体 | 更新日期: 2023-09-27 18:02:30

我的问题是,当我写一个基本的EF查询从数据库中获取数据时,它检索数据很好,但是当我更改SQL Server数据库中的数据并重新加载查询时,我得到相同的数据集回来,而不是新的数据。并且数据需要一段时间才能成为修改后的信息。

var mm = o.GetContent(page, title);
例如,上面的查询将返回
mm.Body = "Test";

然后,如果我在SQL Server数据库中更改BodyTest1并重新加载查询,它不会带回Test1

public String GetContent(String page, String title)
{
    var o = new DataContext();
    var mm = o.GetContent(page, title);
    return HttpUtility.HtmlDecode(mm.Body);
}
public class DataContext
{
    private static ApplicationDbContext Da = new ApplicationDbContext();
    public Content GetContent(String page, String title)
    {
        return Da.Content.SingleOrDefault(c => c.Page == page && c.Title == title);
    }   
}

我已经访问了一些SO帖子:

在ASP中防止缓存. NET MVC中使用属性

的特定操作

ASP。. NET MVC如何禁用自动缓存选项?

实体框架似乎在缓存数据

您的DbContext实例是静态的:

private static ApplicationDbContext Da = new ApplicationDbContext();

因此每个AppDomain,所以它一直存在,直到您回收应用程序池。DbContext保存以前见过的项的缓存,直到您调用Refresh()方法。

但是不要那样做。不要让它静止不动。使用实体框架作为工作单元,范围尽可能小。为每个请求创建一个实例