Многопоточность, Entity Framework и SQL

ProgED
Дата: 23.01.2013 13:02:26
Столкнулся я со следующей проблемой - мое приложение, несмотря на обращение к MS SQL из нескольких потоков, ведет себя так, как будто поток всего один.

Поясню.

Есть одна БД на SQL-сервере, одно .NET приложение-сервер, использующее Entity Framework и куча программ-клиентов, обращающихся к этому приложению.

В качестве примера приведу ситуацию:
К .NET-серверу обращаются, скажем, 5 клиентов одновременно с целью получить данные из БД.
.NET-сервер для каждого клиента создает новый поток и далее вся работа по предоставлению информации для клиента идет изолированно каждая в своем потоке.

Проблема в том, что .NET-сервер вместо того, чтобы получить все данные с SQL одновременно для 5 клиентов, ставит их в очередь!
Мне не понятно, является ли это особенностью работы Entity Framework или можно как-нибудь настроить SQL-сервер.

Может кто-нибудь знает как заставить SQL-сервер обрабатывать несколько различных запросов одного приложения, но с несколькими потоками?

Или кто-нибудь сталкивался с подобной проблемой и решил ее по-другому? Буду рад любому совету/опыту.
Jovanny
Дата: 23.01.2013 13:08:51
Скорее всего, так Ваш .Net сервер спроектирован.
Гавриленко Сергей Алексеевич
Дата: 23.01.2013 13:13:42
SQL cервер никак не может влиять на логику работы клиентских приложений.
iiyama
Дата: 23.01.2013 13:16:59
Вам здесь быстрее ответят
ProgED
Дата: 23.01.2013 13:23:08
Я вот думаю может проблема в том, что .NET сервер общается с SQL с помощью одного пользователя. Что если создать несколько пользователей SQL и по кругу их подставлять для каждого потока?

Просто слышал что драйвер SQL при совпадении всех параметров строки подключения не создает новое соединение для клиента, а использует одно и то же...
Гавриленко Сергей Алексеевич
Дата: 23.01.2013 13:25:24
ProgED
Просто слышал что драйвер SQL при совпадении всех параметров строки подключения не создает новое соединение для клиента, а использует одно и то же...
А я слышал, что земля плоская.
Glory
Дата: 23.01.2013 13:26:45
ProgED
Что если создать несколько пользователей SQL и по кругу их подставлять для каждого потока?

И что будет если у меня число пользователей - миллион ?
Мне миллион пользователей в SQL создавать ?

ProgED
Просто слышал что драйвер SQL при совпадении всех параметров строки подключения не создает новое соединение для клиента, а использует одно и то же...

слышал звон, но не знаю, где он
VSVLAD
Дата: 23.01.2013 13:27:36
ProgED,

Потоки создаёте через ТредПул? тогда может быть что потоки в ожидание идут.
super-code
Дата: 23.01.2013 15:05:49
ProgED, не знаю, как с Entity Framework, но если рабоать напрямую, то в каждом потоке должен создаваться свой SqlConnection. Скорее всего в Entity Framework есть что-то типа этого, так вот такая сущность должна быть своя для каждого потока.
alexeyvg
Дата: 23.01.2013 16:36:55
ProgED
Мне не понятно, является ли это особенностью работы Entity Framework или можно как-нибудь настроить SQL-сервер.
Оба предположения неправильные, это просто ваш код так написан.