1、SESSION的失效时间是20分钟,但可以设置,SESSION.TIMEOUT

解决方案 »

  1.   

    1 只要在Session的有效期内,你又取回了这个对象,其中的对象状态还是保持的,除非在别的地方对这个对象进行过操作。2 做数据访问类,当然要有SqlConnection对象,不然如何进行数据库操作,问题的关键是在连接字符串,可以把这个连接串放在某个地方,比如放在web.config中中,比如:<appSettings>
      <add key="ConnectionString0" value="server=stat_data;uid=statanony;pwd=sz;database=statmember"/>
    </appSettings>在数据访问类中每次进行一次数据操作时在web.config中取得连接串来实例化SqlConnection再进行数据操作。3 实际上是每进行一次数据操作,都要经历一次建立连接,操作数据,关闭连接的过程。也就是你说的页面的一次Round Trip中可能对多个实体对象处理,就是要多次进行数据库连接。
      

  2.   

    楼上的第三条,可不一定吧,如果在页面里面有个SqlConnection对象,,在Page_load的时候就建立连接,然后在每个进行数据库操作的地方使用该连接,则每次Round Trip只需要连接一次 . 问题是长时间(不知道一次Round Trip处理算不算"长时间")的保持连接比较占用数据库资源,是用我上面所说的方式好呢,还是楼上所说的方式比较好(每进行一次数据库访问,就建立一次连接)?
      

  3.   

    使用sqlclient访问,会自动配置连接池,所以实际上每个entity访问都连接一次,如果使用连接池,我觉得性能不会有什么影响。
    分析一下以下情况:
    所有用户共享一个连接:肯定不行,我们无法处理multithread的问题
    一个session一个连接:也不行,session的timeout很长,这样肯定在同一时刻有大量的连接,性能也不行。
    一次request一次连接:就是一个page一个连接,在page中大量访问entity时可考虑.
    一个entity access一个连接:这种方式应该是最好的(在有连接池时),Duwamish中大量使用这种方式,并通过using使程序最快dispose该连接,个人觉得也应使用这种方式
      

  4.   

    goody9807():
    多少分升星啊?
      

  5.   

    两个问题  To wolve(愤怒的小鹿) :
    既然有连接池,那Session也就不存在同一时刻有大量连接的情况,多个对同一数据源的连接应该是引用同一个连接句柄一个entity access一个连接,每次用了以后要Dispose掉,那怎么能享受到连接池的效率呢?每次实际上还不是要重新建立连接?另外,在一个项目里面数据库的访问方式是否最好统一(很奇怪,虽然petshop和duwamish是两种不同的方式,但确实都是统一的),但按我的理解,不同的情况应该使用不同的方式,比如只读的数据则用DataReader,需要保存到Session或者更改的数据用DataSet等等
      

  6.   

    1.只要在Session的有效期内,你可以取回了SqlDataAdapter或者SqlConnection变量,
    但尽量不要这么做,因为Session有时容易丢失,
    至于用Session保存DataSet或DataTable倒是不错的方法,就是需要尽快释放。
    2.如果是C/S可以使用public static,使程序使用一个SqlConnection,b/s就不要用static的了,
    容易出问题,至于abstract要使用它必须继承它,有些时候不试用,建议用普通的类,用时打开
    SqlConnection,过后马上关闭。
    to wolve(愤怒的小鹿) :5000
      

  7.   

    ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconconnectionpoolingforsqlservernetdataprovider.htm警告 每次使用完 Connection 后都必须将其关闭。这可以使用 Connection 对象的 Close 或 Dispose 方法来实现。未显式关闭的连接将不会添加或返回到池中。这里dispose只是把该连接返回池中