在lage数据库上生成SubSonic 3.0.0.3 t4模板会耗尽连接

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行

Kij*_*ard 8

我有一个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