C# 实体框架6-DataReader保持连接打开

C# 实体框架6-DataReader保持连接打开,c#,asp.net,entity-framework-6,C#,Asp.net,Entity Framework 6,我有一个DB表,有~50k行 ad_group_id (int) ad_group_name (varchar(1024)) 我尝试获取所有行,如下所示: var adgroups = _ctx.[MY TABLE].SqlQuery(@"select ad_group_id, ad_group_name from [SB_SCHEMA].bckoff_ad_groups_lkp").AsNoTracking().ToList(); 以下是日志: select ad_group_id, ad

我有一个DB表,有
~50k

ad_group_id (int)
ad_group_name (varchar(1024))
我尝试获取所有行,如下所示:

var adgroups = _ctx.[MY TABLE].SqlQuery(@"select ad_group_id, ad_group_name from [SB_SCHEMA].bckoff_ad_groups_lkp").AsNoTracking().ToList();
以下是日志:

select ad_group_id, ad_group_name from [MY_TABLE]

-- Executing at 11/17/2019 6:48:14 PM +02:00

-- Completed in 153 ms with result: SqlDataReader

Closed connection at 11/17/2019 6:48:37 PM +02:00
如您所见,尽管查询速度非常快,但连接仍保持打开状态约23秒

当我只选择ad_group_id列时,需要2秒,但当我将ad_group_name列添加到select语句时,它会跳到23秒

我假设这是DataReader获取数据所需的时间


有什么办法可以解决这个问题吗?

您是否明确地处理了上下文?您的上下文中有IoC?否则,正如mnieto所说,您需要使用将其包装在一个
中。它是一个web api,只有一个dbcontext实例,但我也在using子句中对其进行了测试,而且,同样的结果是,您的标题具有误导性。连接正在关闭,但您关心的是性能。您是否尝试过SSMS中的相同查询?