Довольно новый для разработки CLR SQL. Мне нужно использовать контекстное соединение в нескольких функциях C# в классе UserDefinedFunctions. Вопрос связан ли он или нет лучшеОбъект SQL CLR C# и SqlConnection
- Создание соединения контекста в функции # 1, который затем передается в функцию # 2, # 3 и т.д.
- Создать новое соединение контекста в каждой функции который должен запрашивать базу данных.
- Создайте переменную экземпляра класса и используйте ее для всех функций.
- Создайте функцию «запроса» и передайте ей строку запроса/параметры и выполните все запросы в одной функции. Этот вариант будет эффективно создавать и уничтожать соединение при каждом правильном вызове?
- Открыт для других идей.
Не знаете, что лучше всего подходит для обработки контекстного соединения, когда оно необходимо в разных местах кода.
Предпочитаете использовать using (SqlConnection connection...) {}
, чтобы обеспечить правильное удаление вещей, но, возможно, также можно использовать деструктор в классе для этого?
Спасибо. Да, мне нужно держать его БЕЗОПАСНЫМ. Так вы говорите, что варианты 1,2,4 являются жизнеспособными вариантами? И вариант 1 может не стоить этого в зависимости от того, какая работа выполняется? И я очень ценю технические подробности - теперь я лучше понимаю, что происходит за кулисами. – thomas
Можете ли вы помочь мне понять «с тем фактом, что вы не можете передавать информацию обратно в то же время, что контекстное соединение открыто». Передайте данные обратно вызывающему абоненту в SQL Server или передайте данные обратно на вызывающую функцию (возврат) в C#? – thomas
@thomas: Вы должны проверить, какая относительная разница для № 1. Я «думаю», что стоимость создания/уничтожения «Context Connection = true» 'SqlConnection' близка к нулю, учитывая, что вы уже привязаны к процесс SQL Server. У меня нет статистики, но SQL Server не нужно выделять новые ресурсы, как с новым соединением. Между 2 и 4 они звучат примерно так же, просто организованы по-разному. Я бы предложил сделать код работать и быть удобным/удобочитаемым. Что касается передачи данных назад, я думал о передаче TVF обратно в запрос. –