Global SqlConnection - PullRequest
       12

Global SqlConnection

0 голосов
/ 05 июля 2010

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

Спасибо

Ответы [ 3 ]

3 голосов
/ 05 июля 2010

Нет.

Согласно документации для SqlConnection :

Любые открытые статические (Shared в Visual Basic) члены этого типа являются потокобезопасными.Ни один из членов экземпляра не гарантированно является потокобезопасным.

Поскольку ваши разные веб-методы могут вызываться одновременно из разных потоков, лучше не использовать один и тот же экземпляр соединения между ними.

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

0 голосов
/ 05 июля 2010

Если вам не нужна очень высокая производительность, открывайте и закрывайте каждое соединение при каждом использовании. IIS или система сделает все остальное за вас. Просто и эффективно.

0 голосов
/ 05 июля 2010

Что, если вам когда-нибудь понадобится второе соединение?

Я бы посоветовал передать переменную между классами / функциями, при желании поместив ее в качестве членов класса.

...