![]() |
|
Модераторы: gambit |
![]()
|
|
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Судя по тому коду, который предоставил thomas, connection не диспозится, а просто открывается/закрывается. Так connection подолгу и не держится. Опять же, сужу по вышеприведенному коду: там соединение открывается до выполнения операции и закрывается сразу после завершения ее выполнения. А вообще интересно, что побудило thomas отойти от традиционного подхода с созданием SqlConnection через using при каждом запросе... Я тут насчет MARS подумал... пожалуй, не будет оно так работать. С открытием подключения и выполнением запроса все будет в порядке, но как только один из потоков вызовет Connection.Close, оставшиеся задачи выполнены не будут. MARS больше подходит для ситуаций, когда нужно в одном месте выполнять несколько запросов через одно соединение. |
|||
|
||||
| PashaPash |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 8 Всего: 49 |
А судя по MSDN - вызов Close эквивалентен вызову Dispose.
Жажда приключений? |
||||
|
|||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Это да... Я тут поигрался немного... ну никак мне не удается добиться того, чтобы само по себе "обнулялось" свойство ConnectionString. Вероятно, по этой же причине thomas игнорирует ORM |
|||
|
||||
| thomas |
|
||||||||||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Приветствую всех.
Была маленькая запара на сельскохозяйственной ниве, потому не мог выйти в сеть. Всем спасибо за обсуждение моей проблемы. Unlocker,
Idsa,
PashaPash,
Idsa,
Отвечаю сразу обоим. По мнению моего руководителя проекта, создание каждый раз объекта соединения с БД слишком накладная операция, а потому нужно иметь один раз созданный объект соединения и использовать его по мере необходимости. Возможно он и прав. Судите сами. Вот у меня только для того чтобы отобразить дерево Группа-Категории-Субкатегории в treeView и товары субкатегории в DataGridView нужно создать четыре соединения и сделать выборку данных. А если пользователей у программы не один, а с десяток. И далее для каждого действия с данными каждый раз создавать соединение по новой. Картина получается не вполне нормальная. Программа только и делает что создает соединения с БД. А если это все происходит не на локальном сервере в локальной сети, а через интернет? Так что PashaPash, правильно ли создавать SqlConnection и открывать/закрывать для каждой операции? Пока что я вернулся к своему первоначальному варианту, т.е. для каждой операции создание своего соединения. На следующей неделе буду общаться с преподом с глазу на глаз и спрошу про
Интересно что он скажет? Хотя с другой стороны. Вот сейчас в школе закончили семестр в котором работали небольшими группами над проектами. В нашем проекте мы с успехом смогли использовать одно соединение созданное статическим классом. Но там не было каскадных вызовов соединения. Внутри каждой операции был только вызов одной команды. Классы описывали только один объект и в них не было свойств содержащих дочерние объекты, как в моем проекте. Так что не все так однозначно. Похоже нужно глубже изучать этот вопрос и искать золотую середину. Добавлено через 2 минуты и 43 секунды Idsa,
-------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||||||||||
|
|||||||||||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Программа лишь создает экземпляры класса SqlConnection, сами физические соединения поддерживаются connection pool'ом и не разрываются при каждом вызове SqlConnection.Close.
Так ее давно уже нашли. И имя ей - Connection Pool. |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 8 Всего: 49 |
||||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Насколько я понял, ты реализуешь банальный DAL с CRUD-операциями. Все правильно? Если так, то для этих целей гораздо удобнее использовать ORM. |
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Idsa,
ORM - wat is dat? -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| Unlocker |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 2.11.2007 Где: Москва - Знаменск (Капустин Яр) Репутация: 1 Всего: 2 |
--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b." |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
||||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |