实体框架似乎在缓存数据
本文关键字:缓存 数据 框架 实体 | 更新日期: 2023-09-27 18:02:30
我的问题是,当我写一个基本的EF查询从数据库中获取数据时,它检索数据很好,但是当我更改SQL Server数据库中的数据并重新加载查询时,我得到相同的数据集回来,而不是新的数据。并且数据需要一段时间才能成为修改后的信息。
var mm = o.GetContent(page, title);
例如,上面的查询将返回
mm.Body = "Test";
然后,如果我在SQL Server数据库中更改Body
为Test1
并重新加载查询,它不会带回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()
方法。
但是不要那样做。不要让它静止不动。使用实体框架作为工作单元,范围尽可能小。为每个请求创建一个实例