开发者社区> 问答> 正文

为什么SQL Connection意外关闭

在以下代码中,为什么我的连接关闭了?底部的代码有效,因此我的应用程序正在运行。我真的很好奇为什么顶部的代码不起作用。

using (var dbConn = new SqlConnection(_connectionStrings.SqlServer))
{
    var mySqlText = @"
                       ....  some SQL code here
                     ";

    widgets.ForEach(async widget =>
            {
                await dbConn.ExecuteAsync(mySqlText, widget);   <=== Connection is closed here 
            });
}

相比之下,这确实按预期工作。

var mySqlText = @"
                    ....  some SQL code here
                 ";
widgets.ForEach(async widget =>
        {
            using (var dbConn = new SqlConnection(_connectionStrings.SqlServer))
            {
                await dbConn.ExecuteAsync(mySqlText, widget); 
            }
        });

展开
收起
心有灵_夕 2019-12-25 21:50:17 867 0
1 条回答
写回答
取消 提交回答
  • 应该可行

    using (var dbConn = new SqlConnection(_connectionStrings.SqlServer))
    {
        var mySqlText = @"
                           ....  some SQL code here
                         ";
    
        foreach(var widget in widgets)
        {
            await dbConn.ExecuteAsync(mySqlText, widget); 
        }
    }
    
    

    要么

    using (var dbConn = new SqlConnection(_connectionStrings.SqlServer))
    {
        var mySqlText = @"
                           ....  some SQL code here
                         ";
        var allTasks = widgets.Select(widget => dbConn.ExecuteAsync(mySqlText, widget));
    
        await Task.WhenAll(allTasks);
    }
    
    2019-12-25 21:51:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载