Но, с другой стороны, я бы слишком осторожно относился к открытию и закрытию соединений. Это намного дешевле с пулом соединений, чем без, но даже с пулом менеджер пула может решить увеличить или уменьшить пул, превратив его в дорогостоящую операцию.
Мое общее правило заключается в том, чтобы открыть соединение, когда пользователь инициирует какое-либо действие, выполнит работу, а затем закроет соединение, прежде чем ждать следующего ввода пользователя. Для любой данной кнопки «Обновить» нажмите или что-то еще, у меня обычно будет только одно соединение. Но вы определенно не хотите, чтобы соединения открывались во время ожидания ввода пользователя, если вы можете вообще помочь ему по всем причинам, о которых говорили другие. Вы могли буквально дождаться дней до того, как пользователь нажмет другую клавишу или коснется другой кнопки - что, если он покинет свой компьютер и отправится в отпуск? Завязывание ресурса за непредсказуемое количество времени - это плохая новость. В большинстве случаев прошедшее время, ожидающее ввода пользователя, намного превышает время выполнения фактической работы.
Я думаю, это также должно вас заинтересовать: http://valueinjecter.codeplex.com/wikipage?title=Data%20access%20layer%20%28ORM%29%20with%20the%20Value%20Injecter&referringTitle=Home – Omu