【发布时间】:2009-03-27 17:56:31
【问题描述】:
我收到报告称,在远程计算机上与 sql server 一起使用时,连接池在 Subsonic orm 中不起作用。我不确定他们是如何监控这个的,也许是使用分析器。
Subsonic 开得晚,关得早,就像你在 orm 层中应该做的那样,但是实现有什么问题会导致太多的连接?
【问题讨论】:
标签: sql-server subsonic
我收到报告称,在远程计算机上与 sql server 一起使用时,连接池在 Subsonic orm 中不起作用。我不确定他们是如何监控这个的,也许是使用分析器。
Subsonic 开得晚,关得早,就像你在 orm 层中应该做的那样,但是实现有什么问题会导致太多的连接?
【问题讨论】:
标签: sql-server subsonic
在使用 SubSonic 时,有一种方法可以使连接保持打开状态。许多人认为当你加载一个集合时,阅读器会为你关闭——但事实并非如此(一个类不应该在未经许可的情况下作用于另一个类)。为此,有一个名为“LoadAndCloseReader()”的方法。
如果你能找到更多,那就太好了。
【讨论】:
这是否意味着 SubSonic 的连接默认是持久的?
【讨论】:
我不确定早期版本,但在 2.1 中,AbstractList.Load() 已经使用了包装在 using 语句中的 LoadAndCloseReader(rdr)。
【讨论】:
这是我最近在遇到类似问题后才发现的。
正如 Rob 所说,它不应该这样使用:
MyTableCollection objCol = new MyTableCollection().Load();
它应该像这样使用:
MyTableCollection objCol = new MyTableCollection();
objCol.LoadAndCloseReader(MyTable.FetchAll());
【讨论】: