当前位置:编程学习 > C#/ASP.NET >>

一个缓存问题求助各位大侠..

这里我使用了EnterPrise Library中的Cache Block。

这里是BLL层

public void GetAllNews(NewsDS mynewsDS)
{
     if (EnterLibFacade.GetCacheItem("NewsList") == null)
     {
           NewsDAL.GetAllNews(mynewsDS, mynewsDS.News.TableName);
           EnterLibFacade.AddCacheItem("NewsList", mynewsDS, (int)CacheExpirationTime.Normal, 5);
     }
     else
     {
           mynewsDS = (NewsDS)EnterLibFacade.GetCacheItem("NewsList");
     }
}


这是WEB层

        private NewsBLL mynewsBLL;
        private NewsDS mynewsDS;
        protected void Page_Load(object sender, EventArgs e)
        {
            mynewsBLL = NewsBLL.GetNews;
            mynewsDS = new NewsDS();
            mynewsBLL.GetAllNews(mynewsDS);
            for (int i = 6; i < mynewsDS.Tables["News"].Rows.Count; i++)
            {
                mynewsDS.Tables["News"].Rows.RemoveAt(i);
            }
            dl_news.DataSource = mynewsDS;
            dl_news.DataBind();
        }


我从WEB层第一次调用这个方法时,是从数据库中直接取出来的,数据可以正确读取,但是当 页面刷新 或者 页面跳转,这一次是从缓存中读取,我调试了很久,在BLL时,mynewsDS有数据,但回到表现层时mynewsDS就没数据了。 想了许久还是没想出来,求助各位大侠。 (NewsDS是数据集) --------------------编程问答-------------------- 你这样定义private NewsDS mynewsDS;
当然没有了....
Cache不是这样用的 --------------------编程问答-------------------- 好好理解下对象的生命周期的概念,
以及缓存的原理与用法,
再回头就很容易理解你这个问题了 --------------------编程问答-------------------- 那我就理解不到了,为何从数据库中读取出来可以绑定到datalist,而从cache中读取出来后,一样的数据填充进去mynewsDS中 却不可以了... (-_- |) --------------------编程问答-------------------- 两层有数据联系吗? --------------------编程问答-------------------- 有啊,第一次加载页面时是可以绑定到datalist的,数据正确。而且第二次我调试时,我也能看到从cache中读出来的数据,也是正确的数据。只是在返回到WEB层就没数据了..  --------------------编程问答-------------------- public NewsDS GetAllNews()
{
NewsDS mynewsDS;
     if (EnterLibFacade.GetCacheItem("NewsList") == null)
     {
           NewsDAL.GetAllNews(mynewsDS, mynewsDS.News.TableName);
           EnterLibFacade.AddCacheItem("NewsList", mynewsDS, (int)CacheExpirationTime.Normal, 5);
     }
     else
     {
           mynewsDS = (NewsDS)EnterLibFacade.GetCacheItem("NewsList");
     }
return mynewsDS;
}
虽然类是按.....传递的
但还是用return把 --------------------编程问答-------------------- 我也想到了,用return,但是不明白其中的道理,2L的大人说得那么玄乎,我跑去看了下还是没发现问题所在。哪位大侠能把道理给说明白,造福四方啊~~  --------------------编程问答-------------------- 可能是我没看懂你的代码,搞错了吧 --------------------编程问答-------------------- (O_o |) 看来这问题是个大问题...
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,