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(“”));??
1条答案
按热度按时间r1wp621o1#
不要!
连接位于连接池中,在连接池中,它们被有效地处理。它们不会被创建和释放,而是返回到池中。另外,使用单例连接可能会导致在多个地方同时使用它。这会导致问题。
你的模式是正确的模式。