以前用ASP的时候总是在页面开头打开连接,在页面最后关闭连接,现在采用三层模型发现不好这样做。因为连接的建立和关闭应该是数据访问层的事情,但是数据访问层并不知道请求或页面何时结束,也就无法控制连接关闭的时机了,曾经想过每次执行SQL前后分别控制连接的打开和关闭,但这样下来一个请求可能就得打开关闭连接十几次,尽管使用了连接池但这样做的性能可能还是有些影响的,请问各位有什么高见?

解决方案 »

  1.   

    我是照楼主所说的每次执行sql前后分别打开和关闭的
    效率上就完全靠连接池了到目前为止所做的网站没有规模太大的,问题还不大。
    一下,看看有没有高人给出好的解决办法。
      

  2.   

    关闭在数据层,取得数据后如dataset就close.
      

  3.   

    建议使用微软的企业库
    或者NHibernate之类来实现O/R Mapping
      

  4.   

    ========其实你 执行数据库 操作之后 就关闭,
    这样是 最好的 
    try
    {}
    catch{}
    finally
    {
      conn.Close();
    }
      

  5.   

    嗯,我想每次执行SQL前后打开和关闭连接这个可能要做一下性能测试,
    企业库那种印象中好像是在请求的开头和结束在上层显式调用接口方法,间接打开和关闭连接的。。
      

  6.   

    其实有连接池,性能影响不大。 conn.Close() ;并不是真的关闭了,只要不.Dispose()就行了
     还有映射的时候可以一次执行N条填充N个
      

  7.   

    啊,conn的close()和dispose()不是同一回事吗?