|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
Вот такой вопрос. Что предпочтительнее - держать открытым SqlConnection/DataContext на всё время работы программы либо перед каждым запросом его открывать, а потом закрывать? Начальник говорит, что открытый SqlConnection жрёт много ресурсов, где-то по форумам читал, что открытие/закрытие соединения с БД жрёт много ресурсов. Так кто прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2010, 14:55 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
Открывать контекст или соединение только для обращения к БД и сразу же, как только надобность в БД отпала, закрывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2010, 15:20 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
А как быть с DataContext? У него же нет методов Open/Close. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2010, 16:42 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
RazielА как быть с DataContext? У него же нет методов Open/Close. Код: plaintext 1. 2. 3.
P.S. Посмотрите еще паттерн Repository. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2010, 16:54 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
RazielА как быть с DataContext? У него же нет методов Open/Close. DataContext не держит открытых соединений, следовательно без нужды вызывать Dispose() у него не обязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2010, 21:21 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
Raziel, не слушайте никого и знайте: юзинговать (диспоузить) нужно всё, что наследуется от IDisposable при условии, если оно уже не нужно. Используйте using и не заморачивайтесь над тем, открыто ли соединение, созданы ли какие-то доп. экземпляры классов и прочее. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2010, 09:52 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
МСУRaziel, не слушайте никого и знайте: юзинговать (диспоузить) нужно всё, что наследуется от IDisposable при условии, если оно уже не нужно. Ключевое слово у тебя - "если оно уже не нужно". Если нужно, using-ом не воспользоваться, то конкретно DataContext диспоузить не обязательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2010, 12:19 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
А если у меня 15 объектов, работающих каждый в своем потоке, и каждый делает 5 запросов в секунду к одной и то же таблице БД. Как правильно организовать работу с DataContext?: 1. Создавать DataContext на уровне объекта, чтобы для каждого потока был свой DataContext. Я делаю его статическим. Код: plaintext
При такой кострукции, после нескольких срабатываний, я получаю ошибку, что "Существует назначенный этой команде Command открытый DataReader, который требуется предварительно закрыть" 2. Создавать DataContext перед выполнение каждого запроса через Код: plaintext
Но резульататы LINQ запроса мне надо отрисовывать, то есть обрабоку полученного query мне нужно делегировать в поток диспетчера, а если внутри using {} попыаться сделать что-то типа MyWindow.Dispatcher.BeginInvoke(new ThreadStart(() => и т.д., то все падает с ошибкой. 3. Если просто в начале метода, без using, создавать DataContext Код: plaintext
...то так работает и не падает, по идет дикая загрузука ЦП от sqlservr.exe. Как правильно организовать работу с DataContext в моем случае, то есть в случае большого и постоянного количества запросов к БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2011, 18:39 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
Questq2, Я бы использовал первый вариант (создание DataContext-а на уровне объекта). А почему Вы его делаете static? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2011, 17:29 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
VitaliyBoris, статик - просто для удобства обращения к нему. Думаете, ошибка связана с этим? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2011, 18:12 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
VitaliyBoris, я убрал статик, падать перестало, но загрузка проца осталась. Значит, видимо, дело не в коннекте. Я создал отдельную тему по своей проблеме http://www.sql.ru/forum/actualthread.aspx?tid=862740, там все описано более подробно. В двух словах - формально все работает, но очень ресурсов много проца жрет sqlservr.exe, при любом варианте использования DataContext. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2011, 18:31 |
|
Открытый SqlConnection/System.Data.Linq.DataContext в .NET
|
|||
---|---|---|---|
#18+
Вот рабочая ссылка http://www.sql.ru/forum/actualthread.aspx?tid=862740 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.06.2011, 18:32 |
|
|
start [/forum/moderation_log.php?user_name=%D0%9D%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D0%B9+%D0%B4%D0%B8%D0%B1%D0%B8%D1%82%D1%83%D1%81%D1%82]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 440ms |
total: | 592ms |
0 / 0 |