2010-07-12 3 views
1

Должен ли я писать собственную схему объединения соединений?Должен ли я реализовать свою схему объединения соединений?

(Вопрос переписан снова, так что я могу upvote ответов народов)

+0

Что ...? Почему вы хотите установить соединение в кеш? Вы имеете в виду, что хотите добиться объединения пулов? – RPM1984

ответ

2

Я предлагаю вам оставить кеш запроса только для обработки соединений ADO.NET и использовать connection pooling (по умолчанию). Просто сделайте это ниже в любом месте, которое вы хотите, и оно будет закрыто/правильно установлено:

using (SqlConnection cn = new SqlConnection(connectionString)) 
{ 
    using (SqlCommand cm = new SqlCommand(commandString, cn)) 
    { 
     cn.Open(); 
     cm.ExecuteNonQuery(); 
    } 
} 
+0

Я предполагаю, что @Downvoter поражает меня по тем же причинам, что и @LukeH. Почему вы не отправляете ответ, так как вы так критичны? –

5

Я настоятельно рекомендую вам не поставить соединение в кэше в первую очередь.

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

Очень дешево открывать и закрывать соединения из пула, и пул соединений включен по умолчанию. Пусть пул соединений обрабатывает данные, такие как кеширование и т. Д.: Это то, для чего оно есть, и нет никакой пользы - и много потенциальных ловушек - если вы сделаете это сами.

+2

@ Downvoter: Позаботьтесь о том, почему? – LukeH

+0

Потому что это не отвечает на вопрос, он делает это. Это похоже на ответ на вопросы веб-службы, говоря: не используйте веб-службы, потому что могут произойти плохие вещи. Я не могу удалить вопрос, поэтому я переведу все это. – MatthewMartin

+1

@MatthewMartin: Если все StackOverflow было ответило на все * неправильные * вопросы, которые задают люди (вместо того, чтобы предполагать, что, возможно, плакат лает по неправильному дереву целиком), для него было бы намного хуже. Вы не можете обвинять кого-то в попытке помочь вам решить серьезную проблему с кодом, который вы изначально разместили. –

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