【发布时间】:2021-12-31 11:43:53
【问题描述】:
让我们假设一个简单的 ASP.NET MVC 控制器:
public class SomeController : Controller
{
public ActionResult SomeAction()
{
var db = new SomeDataContext(); // without 'using' or 'await using'
var models = db.Models.ToList();
return this.View(models)
}
}
如果我忘记了using-statement,究竟会发生什么?上下文永远不会暴露吗?它会泄漏内存吗?真的是死罪吗?
【问题讨论】:
-
它会泄漏一个打开的连接,最终导致连接池饥饿,Stack Overflow上有很多帖子,例如stackoverflow.com/questions/64261113/…。最终它们通常会被 GC 处理掉,但这可能需要一些时间(如果有的话),而且通常速度不够快,无法避免饥饿。拥有
using区块真的要花钱吗?
标签: c# asp.net asp.net-mvc entity-framework entity-framework-core