如何手动清除ObjectDataSource缓存

时间:2012-03-02 10:50:33

标签: c# asp.net .net

我无法找到简单问题的答案:如何手动清除ObjectDataSource缓存 - 来自我的C#代码。在Visual Studio 2010中使用带有.NET v4的ASP.NET和一些DevExpress组件。

我有:

<asp:ObjectDataSource ID="SomeId" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="SomeMethod" TypeName="SomeType" EnableCaching="True" CacheDuration="9999" CacheExpirationPolicy="Absolute"> </asp:ObjectDataSource>

我已阅读类似的问题:Where does the ObjectDataSource cache data?链接到:ObjectDataSource.EnableCaching Property。它表示缓存存储在Cache对象(Page.Cache)中。

我找到的所有其他建议都会导致Cache对象。问题是:Cache对我来说是空的,而Cache.Remove(ObjectDataSourceID.CacheKeyDependency);什么都不做。

即使Cache为空,缓存机制也能正常工作。将EnableCaching更改为false会禁用缓存,但在将其设置为true后,它会使用缓存的旧值启用缓存。

2 个答案:

答案 0 :(得分:3)

感谢FrédéricHamidi的评论,我发现了以下主题: Clear cache in SqlDataSource

使用CacheKeyDependency =“MyCacheDependency”然后在代码中:

Cache["MyCacheDependency"] = DateTime.Now; -- invalidates cache.

答案 1 :(得分:1)

在.aspx

<asp:ObjectDataSource ID="ODSData" runat="server" 
    EnableCaching="true" CacheKeyDependency="MyCacheKey"

在c#

Cache.Remove(ODSData.CacheKeyDependency);