DAAB, лучший подход к использованию экземпляров базы данных - PullRequest
4 голосов
/ 11 декабря 2008

Ребята, я собираюсь использовать Enterprise Library (4.1) и особенно DAAB. Вот у меня есть вопросы:

  1. Каков наилучший подход и почему:

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

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

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

Спасибо.

1 Ответ

0 голосов
/ 31 января 2014

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

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

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

...