是否建议将单例方法用于Azure SQL DB?

aiazj4mn  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(125)

Azure SQL DB
现在,我们正在为每个传入的请求创建,打开和关闭连接。比如下面

on Startup.cs

            builder.Services.*AddScoped*<IDbConnection>(_ => new SqlConnection(""));
            builder.Services.*AddScoped*<Func<IDbConnection>>(svc => () => svc.GetRequiredService<IDbConnection>());

 on clientimpl.cs
       private readonly Func<IDbConnection> _connectionFactory;
       using (var connection = _connectionFactory())
            {
                //check status before open
                if (connection.State == ConnectionState.Closed)
                    connection.Open();

             finally
                {
                    connection.Close();
                }
            }

代替上述方法,
想到创建singleton sql conn对象,并在整个应用程序生命周期中重用同一个示例,而不是为每个请求创建、打开和关闭连接。
是否建议将单例方法用于Azure SQL DB?有没有什么考虑?
问题:builder.Services.AddScoped(_ => new SqlConnection(“”)); recommeded than builder.Services.AddSingleton(_ => new SqlConnection(“”));??

r1wp621o

r1wp621o1#

不要!
连接位于连接池中,在连接池中,它们被有效地处理。它们不会被创建和释放,而是返回到池中。另外,使用单例连接可能会导致在多个地方同时使用它。这会导致问题。
你的模式是正确的模式。

相关问题