ObjectDataSource和CacheKeyDependency可能的bug

时间:2012-10-24 08:07:24

标签: .net caching objectdatasource

我注意到ObjectDataSource使用 CacheKeyDependency

的行为很奇怪

当我在声明性.aspx语法中设置CacheKeyDependency时,ObjectDataSource.Selecting事件(和选定的)被称为两次! (当然,相关的数据库SelectMethod也会被调用两次)

但是,如果我删除了CacheKeyDependencyObjectDataSource选择事件正确,只发生一次!

速度相关,如果我假设选择/选择只被调用一次,这可能会破坏我的代码隐藏逻辑...

有人注意到了吗?

这种行为可能归因于ASP.NET中的错误,或者我的代码中可能存在一些错误?

PS:事件的时间表是这样的,粗体是重复的:

PageLoad

ODS_Selecting

DataLayer Select

ODS_Selected

ODS_Filtering

GridView_DataBound

**ODS_Selecting**

**DataLayer Select**

**ODS_Selected**

ODS_Filtering

GridView_DataBound

GridView_PreRender

1 个答案:

答案 0 :(得分:1)

必须设置Cache的{​​{1}}值。如果没有,CacheKeyDependency缓存基本上被禁用,这可能导致select方法被调用两次。

请参阅Microsoft documentation中的示例。

ObjectDataSource

找到以下最佳方法。当页面加载不是回发时,MS示例将使缓存失效。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Cache[ObjectDataSource2.CacheKeyDependency] = "CacheExample";
    }
}