Использование Enterprise Library 5.0 Вопросы доступа к данным - PullRequest
1 голос
/ 07 июня 2011

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

Сначала я использовал что-то вродеКорпоративную библиотеку около 10 лет, и она переключалась между сущностями и т. д.

В любом случае, когда я использую функцию CreateDatabase () класса Database, это сразу открывает соединение с базой данных ИЛИэто открывает соединение, когда я на самом деле звоню, используя что-то вроде ExecuteReader?

Как он обрабатывает закрытие соединения?Должен ли я явно вызывать закрытие соединения после использования его в DAL?Как Enterprise Library гарантирует, что соединение будет закрыто после того, как я закончу с Reader и т. Д.?

Кроме того, каковы лучшие практики для открытия и закрытия соединения, если CreateDatabase немедленно открывает соединение?Хотите поделиться небольшим образцом кода?

1 Ответ

5 голосов
/ 07 июня 2011

CreateDatabase () не открывает соединение с базой данных. Отдельные команды обычно обрабатывают открытие и закрытие соединения (например, ExecuteNonQuery).

Конечно, всегда есть исключение. Для ExecuteReader не имеет смысла немедленно закрывать соединение. ExecuteReader настроен на закрытие соединения при удалении DbDataReader, поэтому вы видите этот шаблон с помощью ExecuteReader:

using (IDataReader reader = db.ExecuteReader(cmd))
{
  // Process results
} 

при выходе из блока using утилита DbDataReader удаляется и соединение закрывается.

Руководство разработчика корпоративной библиотеки также немного затрагивает эту тему.

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

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