Asp.net mvc 3 实体框架问题:检索缓存值而不是最近的更改

Asp.net mvc 3 实体框架问题:检索缓存值而不是最近的更改,asp.net-mvc-3,entity-framework,caching,Asp.net Mvc 3,Entity Framework,Caching,我有一个在表中循环的存储过程,它可以在该表中插入一些记录。工作正常。我可以使用ManagementStudio查看数据库中的更改 问题是在那之后我将调用另一个存储过程,它将返回一个集合。但它总是返回一个缓存值或类似的东西。数据库中的最新更改不会反映在返回的列表中。有什么想法吗 编辑 我正在导入存储过程以使用EF运行。我做的所有操作都是通过EF完成的。 检查以下代码 TraktorumEntities db = new TraktorumEntities(); var test= db.GetA

我有一个在表中循环的存储过程,它可以在该表中插入一些记录。工作正常。我可以使用ManagementStudio查看数据库中的更改

问题是在那之后我将调用另一个存储过程,它将返回一个集合。但它总是返回一个缓存值或类似的东西。数据库中的最新更改不会反映在返回的列表中。有什么想法吗

编辑

我正在导入存储过程以使用EF运行。我做的所有操作都是通过EF完成的。 检查以下代码

 TraktorumEntities db = new TraktorumEntities();
var test= db.GetAvailableAttributes(CategoryID).ToList(); // here i get cached values  .How can i force to fetch data from data base 

是否在全局应用程序\u Start中保留了一些Database.SetInitializer?

如果使用相同的键进行查询,EF将缓存结果

注意这里的“MergeOption.OverwriteChanges”部分

您需要告诉EF使用此选项“获取新数据并覆盖本地存储的版本”

另外,您也没有确切地告诉我们您是如何查询这些数据的。这是一个映射存储过程(映射到实体操作)还是直接在上下文中调用它,或者

编辑 试着做些类似的事情

var test= db.GetAvailableAttributes(CategoryID) test.MergeOption = MergeOption.NoTracking; var results = test.ToList() var test=db.GetAvailableAttributes(CategoryID) test.MergeOption=MergeOption.NoTracking; var结果=test.ToList()
不,我不会用那样的东西,这是ORM的问题。一旦您使用在ORM之外进行更改的存储过程,ORM就不知道这些更改,您必须显式地强制它重新加载数据。使用
MergeOption
尝试@Adam的建议。如果不起作用,请使用新上下文执行第二个存储过程。另请参阅: