Вопрос подключения к базе данных Entity Framework - PullRequest
1 голос
/ 30 июня 2010

Мы используем .Net Entity Framework для выполнения нашей работы с базой данных.Наша база данных: Sybase SQL Anywhere.

using (AndeDBEntities db = new AndeDBEntities(decryptConnStr()))
{

}

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

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

Ответы [ 3 ]

2 голосов
/ 30 июня 2010

Соединение должно быть закрыто автоматически. Возможно, в поддерживаемых классах Sybase EF произошла утечка ресурсов.

См. Управление соединениями для получения дополнительной информации. Обратите внимание, что (по умолчанию) EF открывает и удаляет соединение с базой данных для каждого запроса или вызова SaveChanges. Если поддерживающие классы Sybase не справляются с этим хорошо (например, с пулом соединений), тогда утечка ресурсов может стать заметной, если в противном случае ее не будет.

Так что на самом деле оператор using не закрывает соединение EF (если вы не открыли его вручную). Он должен быть уже удален (передан в пул соединений или закрыт) до достижения конца оператора using.

1 голос
/ 30 июня 2010

Оператор using гарантирует, что дБ будет удален, а соединение закрыто.

Grz, Kris.

1 голос
/ 30 июня 2010

Нет, вы оборачиваете объект AndeDBEntities в блок using, что означает, что его метод Dispose() будет вызываться, когда он выходит из области видимости (поскольку он реализует IDisposable).Этот метод очистит все неуправляемые ресурсы, добытые объектом (при условии, что он был разработан без утечки - что, я думаю, является справедливой презумпцией).

Я не верю, что это путьошибка ограничения вашего соединения.У вас есть версия для разработчиков?Лицензия распространяется только на 3 соединения.

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