BUG1:using + DbContext 释放资源问题

BUG1:using + DbContext 释放资源问题

2020-12-1


using 关键词用法:

  • 指令:导入命名空间,可指定该命名空间别名
  • +static指令: 导入单个类中的成员
  • 语句:为指定的变量/资源指定一个范围,在末尾自动调用Dispose来释放资源

DbContext 定义

  • 一个实例代表与数据库的一个Session,可做增删改查等操作
  • 是单元化和仓储模式的结合

问题:

在一个HTTP请求内,要多次查询数据库中不同的数据,但第二次查询时,触发异常。异常提示:The ConnectionString property has not been initialized.

提示后发现,在第二次开始调用后,发现Connection中的配置数据丢失。

DbConnection如下调用:

using(var conn = ApplicationDbContext.Database.GetDbConnection())
{
    //todo:Do someting
}

原因:

在Web应用中,配置了Scoped类型的DbContext,生命周期为一个请求(请求开始-请求结束)。

由于使用了using语句,第一次调用结束后,系统自动调用Dispose方法对ApplicationDbContext的Connection进行了资源释放。

所以第二次调用时就会出错。因为这两次调用是在同一个请求内,用的是同一个DbContext的Connection。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值