我們使用MySql nuget包在.NET Core和Entity Framework Core中開發了一個項目。EF Core MySql連接不關閉
上下文被加到使用以下行扶養注射:
services.AddDbContext<ReadWriteContext>(options => options.UseMySQL(Configuration["Machine:ReadWriteConnectionString"]));
然後,在控制器,這個注入這樣:
public class SystemController : Controller
{
private readonly ReadWriteContext _dataContext;
public SystemController(ReadWriteContext dataContext)
{
_dataContext = dataContext;
}
...
}
並用作例如:
var hasServices = await _dataContext.Services.AnyAsync();
在日誌中我們看到了開始和結束日誌行:
Opening connection to database 'config_service' on server '10.211.55.5'.
Closing connection to database 'config_service' on server '10.211.55.5'.
但是,當我們查看MySql服務器並運行「show full processlist」時,連接仍顯示爲處於睡眠狀態並且從不關閉。當您停止.NET進程時,連接將關閉並從MySql進程列表中消失。
當請求完成時,我如何獲得連接關閉。 AddDbContext應該被限制到當前的請求,但它似乎沒有正確關閉連接。
任何幫助將是偉大的?
.Net通常使用一個連接池,它不會中斷連接,它不會無故地保持活動狀態。如果您需要強制連接,我認爲您需要處理上下文。 – VMAtm