C # - Должен ли я использовать статическое соединение с базой данных

В моем приложении для подключения к базе данных Orace я всегда создаю новое соединение, открываю его, запускаю OracleCommands и, наконец, закрываю его потом. Недавно я думал, что реализация статической связи будет лучшей идеей. Скажем, у меня есть статическое соединение, с которым я могу получить доступ из любой точки. Каждый раз, когда мне нужно подключаться к базе данных, я могу проверить состояние моего статического соединения, открыть его, если он еще не открыт и закрыть его потом. Считаете ли вы, что это было бы выгодно или есть больше недостатков?

c#,database,oracle,

7

Ответов: 2


6 ов принято

Я предполагаю, что вы используете ODBC здесь, потому что вы не указали точно, и это обычно используется ...

Нет, вы должны использовать новое соединение каждый раз, это стандартная практика, рекомендуемая Microsoft. Если вы используете ODBC и т. Д., Тогда окна управляют этими соединениями, кэшируя их для повторного использования, и это упрощает управление временем жизни.

Если вы используете статическое соединение, вы можете избавиться от него раньше или закрыть его, не зная. В общем, это просто немного неудобно и преждевременная оптимизация.

Для развертывания высокопроизводительных приложений часто необходимо использовать пул соединений. Однако, когда вы используете поставщик данных .NET Framework для ODBC, вам не нужно включать объединение пулов, потому что провайдер управляет этим автоматически.

См. OdbcConnection для получения дополнительной информации.


1

В общем случае нет, вы не должны использовать одно соединение - все поставщики .NET ADO.NET поддерживают объединение пулов, а обычный шаблон - открывать / закрывать соединения по мере необходимости (в блоке usingили try/finallyблоке для обеспечения соединения закрывается в случае исключения).

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

В любом другом приложении вам определенно не следует использовать общее статическое соединение, так как оно не является потокобезопасным.

C #, базы данных, оракул,
Похожие вопросы