You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core:必须使用using语句才能正确释放DbContext吗?

问题解答

结论:第二种写法无法保证DbContext被正确且及时地释放

原因分析

  1. 第一种写法的await using声明会明确管理DbContext的生命周期:

    • 当await ctx.Devices.ToListAsync()执行完成后,await using会自动调用DbContext的DisposeAsync()方法,及时释放数据库连接等资源,这是EF Core推荐的正确用法。
  2. 第二种写法的问题:

    • 创建的DbContext是一个临时对象,没有被using/await using包裹,.NET不会自动触发它的DisposeAsync()。
    • 虽然垃圾回收最终会回收这个对象的内存,但数据库连接等非托管资源无法被及时释放,长期运行可能导致数据库连接池耗尽,引发性能问题或报错。

正确做法

始终使用await using(异步场景)或using(同步场景)来包裹DbContext,确保资源被及时释放,就像第一个示例那样。

内容的提问来源于stack exchange,提问作者Avrohom Yisroel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:05:27