Как можно увидеть текущие счетчики, удерживающие соединение открытым в Entity Framework? - PullRequest
0 голосов
/ 09 января 2019

При попытке диагностировать страшную ошибку Entity Framework «Новая транзакция не разрешена, потому что в сеансе работают другие потоки», очевидно, есть перечислитель, все еще работающий с соединением, но у меня есть ToList () почти для всех их уже. Я предполагаю, что есть прокси-объект Lazy Loading, удерживающий в качестве заложника соединение.

Я сталкиваюсь с ошибкой во время foreach'ing над коллекцией ToList (), пытаюсь запустить sproc с выходным параметром, используя dbcontext.Database.ExecuteSqlCommand и получаю исключение.

Мне интересно, есть ли способ опросить DbContext, чтобы узнать, какие перечислители работают в текущем соединении? (Или, точнее, DbContext.Database.Connection)

1 Ответ

0 голосов
/ 09 января 2019

Вы можете использовать счетчики производительности ADO.Net для мониторинга соединений на сервере. Он предоставляет около 10 различных наборов счетчиков для анализа. Подробную документацию можно найти на

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

Другой вариант - запустить средство профилирования SQL и следить за выполнением операторов и подключений на сервере в режиме реального времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...