我正在重构一个.NET AWS Lambda项目,其中包含用于连接到AWS Aurora的MySql.Data.我实现了DI流程,将MySqlConnection作为暂态注册到DI容器中,并将其注入到DataAccess服务中.
MySqlConnection和DataAccess的注册过程如下所示:
启动:
services.AddTransient<MySqlConnection>(provider =>
{
//Get the necessary parameters and build a connection string.
return new MySqlConnection(connectionString);
});
services.AddSingleton<IDataAccess, DataAccess>();
数据访问:
private readonly MySqlConnection _connection;
// inject the MySqlConnection.
async function()
{
await _connection.OpenAsync();
await _connection.DoStuff();
await _connection.CloseAsync();
}
我的老板担心所有的数据库交互都将通过注入到DataAccess类中的单个连接,她不希望数据库崩溃,因为我没有正确清理连接.
我有几个问题:
- 我看到旧的代码库在创建新的MySqlConnection时有Using语句,但在MySQL文档中没有看到.当我创建新的MySqlConnection时,我是否需要"Using"语句?
- 我应该将MySqlConnection注册为暂态并使用DI,还是只是在使用它的类中创建一个新的MySqlConnection实例?
- 数据库连接的DI是否会留下大量打开的连接?或者,在另一个极端,单个连接将减慢lambda的速度,因为它过go 建立了许多连接?
谢谢!