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

时间:2011-10-18 03:17:05

标签: asp.net-mvc-3 entity-framework caching

我有一个循环遍历表的存储过程,它可能会在该表中插入一些记录。它的工作正常。我可以使用management studio查看db中的更改。

问题是之后我将调用另一个存储过程,它将返回一个集合。但它总是返回一个缓存的值或类似的东西.db中的最新更改没有反映在返回的列表中。任何想法?

修改

我使用EF导入存储过程到函数。我所做的所有操作都是通过EF进行的。 Chek遵循代码

 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 

2 个答案:

答案 0 :(得分:1)

如果您使用相同的密钥进行查询,则EF会缓存您的结果。

请注意“MergeOption.OverwriteChanges”部分

Walkthrough: Mapping an Entity to Stored Procedures (Entity Data Model Tools) 您需要通过此选项告知EF“获取新数据并覆盖本地存储的版本”。

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

修改 尝试这些方面的东西

var test= db.GetAvailableAttributes(CategoryID)
test.MergeOption = MergeOption.NoTracking;
var results = test.ToList()

答案 1 :(得分:0)

您是否在Global Application_Start中留下了一些Database.SetInitializer?