2008-12-11 3 views
4

Ребята, я собираюсь использовать Enterprise Library (4.1) и особенно DAAB. Вот у меня есть вопросы:DAAB, лучший подход к использованию экземпляров базы данных -

  1. Что такое лучший подход и почему:

    • Каждый раз, когда мне нужно запустить DbCommand создать экземпляр базы данных с помощью DatabaseFactory.CreateDatabase() ;

    • У меня есть базовый класс с инстанс базы данных (с использованием той же CreateDatabase() статический метод) и что-то вроде общественной собственности, которая возвращает инстанс базы данных.

  2. Как он «тяжелый» или быстрый/медленный, чтобы создать экземпляр класса базы данных? Что делать, если я делаю это каждый раз, когда требуется DbCommand?

спасибо.

ответ

0

Это не проблема. Создание класса базы данных имеет небольшие накладные расходы.

Однако на самом деле создание соединения с базой данных имеет высокие накладные расходы, поэтому Windows делает объединение пулов. Вкратце, в первый раз, когда процесс создает соединение с БД, он просматривает пул соединений для существующего соединения с точно такой же строкой соединения. Если он не находит его, он создает новый (дорогая операция). Когда процесс закрывает его и позволяет выйти из области видимости, он фактически не закрывает соединение с БД, он помещает его в Пул соединений. Остается до тех пор, пока тот же процесс не создает другое соединение с той же строкой соединения. Затем он дает вам уже существующий из пула соединений.

Вы можете отключить пул соединений (с помощью настройки в строке подключения), но это, как правило, очень плохая идея.

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