如何看待目前持有该连接的枚举器在Entity Framework中打开?

时间:2019-01-09 04:11:50

标签: entity-framework

试图诊断可怕的Entity Framework错误“不允许新事务,因为会话中正在运行其他线程”,显然连接上仍存在一个枚举器,但是我几乎所有的ToList()他们已经。我猜那里有一个保存连接人质的惰性加载代理对象。

foreach遍历ToList()集合时,我遇到了错误,尝试使用dbcontext.Database.ExecuteSqlCommand运行带有输出参数的sproc并获取异常。

我想知道,有没有一种方法可以查询DbContext来找出当前在当前连接上运行的枚举数? (或更准确地说是DbContext.Database.Connection)

1 个答案:

答案 0 :(得分:0)

您可以使用ADO.Net性能计数器来监视服务器上的连接。它提供了大约10套不同的计数器进行分析。详细文档可在

中找到
  

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/performance-counters

另一种选择是启动SQL事件探查器并监视语句的执行和连接实时在服务器上发生