jco*_*met 2 subsonic connection-pooling subsonic3
当针对具有1400+表的数据库运行模板时,我收到以下错误.服务器显示数百个连接.有没有人知道这是一般的模板生成问题,还是具体使用这些模板.其他较小的DB对我来说也没问题.
正在运行转换:System.InvalidOperationException:超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.
在Microsoft.VisualStudio.TextTemplating8D8967BD3E8719BDA6DD9945992440F1的System.Data.SqlClient.SqlConnection.Open()处的System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)处的System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)处. C:\ POS\POS.Win\Templates\SQLServer.ttinclude中的GeneratedTextTransformation.GetCommand(String sql):c:\ POS\POS.Win\Templates中Microsoft.VisualStudio.TextTemplating8D8967BD3E8719BDA6DD9945992440F1.GeneratedTextTransformation.LoadFKTables(String tableName)中的第13行\ SQLServer.ttinclude:第179行,Microsoft.VisualStudio.TextTemplating8D8967BD3E8719BDA6DD9945992440F1.GeneratedTextTransformation.LoadTables(),位于c:\ POS\POS.Win\Templates\SQLServer.ttinclude:第131行,位于Microsoft.VisualStudio.TextTemplating8D8967BD3E8719BDA6DD9945992440F1.GeneratedTextTransformation.TransformText()in c:\ POS\POS.Win\Templates\ActiveRecord.tt:第21行
我有一个250表数据库的确切问题.在SQLServer.ttinclude周围,我发现了这个:
var cmd=GetCommand(sql);
cmd.Parameters.AddWithValue("@tableName",table);
var result=cmd.ExecuteScalar();
cmd.Dispose();
if(result!=null)
pk=result.ToString();
Run Code Online (Sandbox Code Playgroud)
将其改为:
using (var cmd=GetCommand(sql))
{
cmd.Parameters.AddWithValue("@tableName",table);
int x = 0;
if (table == "tbl_Address")
x++;
var result=cmd.ExecuteScalar();
if(result!=null)
pk=result.ToString();
cmd.Connection.Close();
}
Run Code Online (Sandbox Code Playgroud)
连接没有关闭,100之后,池中的连接耗尽.任何超过100个表的DB都会遇到此问题.我可以在不触及SubSonic.Core的情况下解决这个问题,真是太棒了.
现在,如果我可以花时间弄清楚Git,我会将此修复发布回亚音速项目.:-D
| 归档时间: |
|
| 查看次数: |
997 次 |
| 最近记录: |