我有一个循环遍历表的存储过程,它可能会在该表中插入一些记录。它的工作正常。我可以使用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
答案 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?