2015-08-19 1 views
1

У меня многопоточное приложение. Каждый поток будет отвечать за загрузку данных в базу данных SQL. Мой вопрос в том, что это правильное решение для этого? Каждый поток должен открыть свое собственное новое соединение db, или для создания базы данных должен использоваться какой-то одноэлементный шаблон. Или, пожалуйста, дайте мне знать, если есть какой-либо другой лучший подход для этого. Любой образец кода будет высоко оценен.Соединения базы данных C#/SQLServer в многопоточной среде

+0

Я предлагаю вам создать новый 'SqlConnection' во всех ваших потоках, поскольку SQL-сервер и DBProvider будут использовать пул соединений, который будет работать быстрее, чем ваш код. – VMAtm

ответ

0

Вам не нужно открывать несколько подключений для одновременного вызова службы WCF. Все, что вам нужно сделать, это использовать асинхронный способ его вызова. Вы можете, например, использовать Parrallel.ForEach() вместо создания собственных потоков.

public void UploadData(List<Data> allDataToUpload) 
{ 
    Parallel.ForEach(allDataToUpload, data => 
    { 
     _yourService.Upload(data); 
    }); 
} 

Кроме того, если вы не очень хорошо знакомы с резьбой, я предлагаю, чтобы использовать все новые инструменты, предоставляемые Microsoft, так как .net 4.5, как в асинхронном, ждут и библиотеки задач вместо управления собственные темы.

+0

Дорогой Ronan благодарит за ваш ответ. Я немного изменил свой вопрос. Я говорил о кодах дБ. – user3056239

+0

Дорогой Ронан благодарит за ваш ответ. Я немного изменил свой вопрос. Я говорил о кодах дБ. Но ваш ответ затронул мою другую проблему. Пожалуйста, ознакомьтесь с обновленным описанием и помогите мне в этом. – user3056239

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