【问题标题】:Is connection pooling working correctly in Subsonic?连接池在 Subsonic 中是否正常工作?
【发布时间】:2009-03-27 17:56:31
【问题描述】:

我收到报告称,在远程计算机上与 sql server 一起使用时,连接池在 Subsonic orm 中不起作用。我不确定他们是如何监控这个的,也许是使用分析器。

Subsonic 开得晚,关得早,就像你在 orm 层中应该做的那样,但是实现有什么问题会导致太多的连接?

【问题讨论】:

    标签: sql-server subsonic


    【解决方案1】:

    在使用 SubSonic 时,有一种方法可以使连接保持打开状态。许多人认为当你加载一个集合时,阅读器会为你关闭——但事实并非如此(一个类不应该在未经许可的情况下作用于另一个类)。为此,有一个名为“LoadAndCloseReader()”的方法。

    如果你能找到更多,那就太好了。

    【讨论】:

      【解决方案2】:

      这是否意味着 SubSonic 的连接默认是持久的?

      【讨论】:

        【解决方案3】:

        我不确定早期版本,但在 2.1 中,AbstractList.Load() 已经使用了包装在 using 语句中的 LoadAndCloseReader(rdr)。

        【讨论】:

          【解决方案4】:

          这是我最近在遇到类似问题后才发现的。

          正如 Rob 所说,它不应该这样使用:

          MyTableCollection objCol = new MyTableCollection().Load();
          

          它应该像这样使用:

          MyTableCollection objCol = new MyTableCollection();
          objCol.LoadAndCloseReader(MyTable.FetchAll());
          

          【讨论】:

          • 也许这样:MyTableCollection objCol = new MyTableCollection(); objCol.LoadAndCloseReader(MyTable.FetchAll());我不会在任何地方这样做。我有大约 40 行要更改。 LoadAndCloseReader 没有文档。看subsonicproject.com/docs/Main_Page,找不到了。我已经好几个月没有使用亚音速了。
          猜你喜欢
          • 2015-12-17
          • 2018-12-10
          • 2019-10-18
          • 2020-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多