1

Согласно MSDN структура сущности должна закрыть свои соединения после определенной операции (например, SaveChanges()).EntityFramework, создающий 130+ соединений

Amazon лает на меня слишком много соединений в моем экземпляре SQL Server (140 соединений). 100 из этих соединений в sp_who2 отображают имя программы «EntityFramework».

OK для EF, чтобы создать все эти соединения? Есть ли уровень очистки приложений, который отсутствует? Может ли начальная периодическая сборка мусора очистить их?

+0

Нет, что государства в статье: Когда метод запроса называется, открывается соединение, и оно остается открытым пока ObjectResult полностью не будет потреблен или не будет удален. Если вы видите слишком много соединений, вы, вероятно, не используете оператор using для удаления соединения при выходе из области вызывающих методов. –

+0

Не забывайте о пуле соединений. Это нормально, чтобы установить соединение. Некоторое время он будет «висели», прежде чем его выбросят. Это должно автоматически использовать повторное использование соединения (это делает ADO.net для вас). – saegeoff

ответ

1

Отправной точкой является то, что вы не оставите контекстные экземпляры, обвисшие вокруг. Обманирование их при использовании блоков может сделать трюк.

4

Использование блоков «using» поможет. Имейте в виду, что соединения ADO.net «объединены». Объединенные соединения будут использоваться повторно, если одна и та же строка соединения используется в течение определенного периода времени. Это должно предотвратить нагромождение всех этих соединений.

Смежные вопросы