zoukankan      html  css  js  c++  java
  • 突然发现 ViewState,Linq 水火不容

    刚才在写一个小东西,突然发现一个问题。很奇怪,希望大家能帮忙解决一下

    我用WebForm+Linq 做一个小网站,在读取数据的时候,我想将Linq 读取出来的泛型集合缓存起来。大家自然想到asp.net中的几个内置对象来存储。其实我也是这样想的。页面内部ViewState 最适合不过了。但是问题出现了。

     

    这个linq 查询出来的数据竟然和ViewState 水火不容,Linq查询出的结果集竟然不能存入到ViewState 中。

    存储代码如下:

    代码

     1 public void SetGameServer()
     2         {
     3             if (ViewState["listServer"!= null)
     4             {
     5                 listServer = ViewState["listServer"as IList<TabGameLink>;
     6             }
     7             else
     8             {
     9                 TabGameLinkDAL access = new TabGameLinkDAL();
    10                 listServer = access.GetTabGameLinkList(41);
    11                 if (listServer == null)
    12                 {
    13                     listServer = new List<TabGameLink>();
    14                 }
    15                 //ViewState["listServer"] = listServer;
    16                 Session["listServer"= listServer;
    17             }
    18         }

     上面的代码我已经使用session 来存储了,后台的Linq 查询方式如下:

    代码
    public IList<TabGameLink> GetTabGameLinkList(int gameID, int typeID)
            {
                eBrainWebDbDataContext context 
    = new eBrainWebDbDataContext(Conn);
                
    return context.TabGameLink.Where(l => l.GameID == gameID && l.TypeID == typeID).OrderByDescending(l => l.CreateTime).ToList<TabGameLink>();
            }

    自己分析了一下上面的问题:

    (1)上面的错误是"System.Data.Linq.ChangeTracker..... 未标记为可序列化" ,标记为不可序列化,但是默认情况Linq 生存的实体是可以序列化的。假设不能序列化,但是我已经手动给实体加了[Serializable],按照道理应该不会出现这样的问题。

     (2)  以前记得ViewState 中存储List<T> 集合似乎是没有问题的,而且自己刚才也试过了,是没有问题的。偏偏Linq 查询的结果就不能存入到ViewState中。是ViewState 对Linq 有偏见,真是这样那么微软对他们的关系就没有调节好了,可以算得上是一个bug了。

    就是不明白ViewState 的存储数据的原理,导致他们水火不容。希望大家帮帮忙,看看这两个家伙是咋回事。你看Session存储就偏偏没事,但是我们不能说总用Session来存储吧,我只是单个页面存储,不需要跨页面。大家有什么解决办法,留个言。帮我解决一下

  • 相关阅读:
    IntelliJ IDEA 如何在同一个窗口创建多个项目--超详细教程
    spring IOC原理
    java工作错误总结
    java跬步积累
    简单易懂设计模式——简单工厂模式
    Argo 项目入驻 CNCF,一文解析 Kubernetes 原生工作流
    电子书下载 | 超实用!阿里售后专家的 K8s 问题排查案例合集
    在生产环境中,阿里云如何构建高性能云原生容器网络?(含 PPT 下载)
    SIG Cloud Provider Alibaba 网研会第 2 期顺利召开 | 云原生生态周报 Vol. 46
    提问赠书 | 我们请了 7 位云原生专家,等你来问
  • 原文地址:https://www.cnblogs.com/qingyuan/p/1709842.html
Copyright © 2011-2022 走看看