我的问题是,当我编写一个基本的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帖子:
Prevent Caching in ASP.NET MVC for specific actions using an attribute
答案 0 :(得分:4)
您的DbContext实例是静态的:
declare @varTest varchar(100);
Set @varTest = Upper('test')
select * from act_msgs m,node_name nn
where Upper(msg_name) like '%' + varTest +'%'
and nn.node_name = '$1'
因此,每个AppDomain,它一直存在,直到您回收应用程序池。 private static ApplicationDbContext Da = new ApplicationDbContext();
保留了之前看到过的商品缓存,直到call the Refresh()
method为止。
但不要这样做。不要让它变得静止。使用实体框架作为工作单元,尽可能缩小范围。每个请求创建一个实例。