Модераторы: gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Статический обьект SqlConnection 
:(
    Опции темы
Idsa
Дата 18.5.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(PashaPash @  18.5.2009,  18:24 Найти цитируемый пост)
Странно ожидать нормальной работы от диспоузнотого объекта.

Судя по тому коду, который предоставил thomas, connection не диспозится, а просто открывается/закрывается.

Цитата(PashaPash @  18.5.2009,  18:24 Найти цитируемый пост)
И, кстати, нет никакого смысла открывать надолго SqlConnection

Так connection подолгу и не держится. Опять же, сужу по вышеприведенному коду: там соединение открывается до выполнения операции и закрывается сразу после завершения ее выполнения.

А вообще интересно, что побудило thomas отойти от традиционного подхода с созданием SqlConnection через using при каждом запросе...

Я тут насчет MARS подумал... пожалуй, не будет оно так работать. С открытием подключения и выполнением запроса все будет в порядке, но как только один из потоков вызовет Connection.Close, оставшиеся задачи выполнены не будут. MARS больше подходит для ситуаций, когда нужно в одном месте выполнять несколько запросов через одно соединение.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
PashaPash
Дата 18.5.2009, 15:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 8
Всего: 49



Цитата(Idsa @  18.5.2009,  15:06 Найти цитируемый пост)

Судя по тому коду, который предоставил thomas, connection не диспозится, а просто открывается/закрывается.

А судя по MSDN - вызов Close эквивалентен вызову Dispose.
Цитата(Idsa @  18.5.2009,  15:06 Найти цитируемый пост)

А вообще интересно, что побудило thomas отойти от традиционного подхода с созданием SqlConnection через using при каждом запросе...

Жажда приключений? smile


--------------------
PM MAIL WWW   Вверх
Idsa
Дата 19.5.2009, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(PashaPash @  18.5.2009,  19:25 Найти цитируемый пост)
А судя по MSDN - вызов Close эквивалентен вызову Dispose.

Это да...

Я тут поигрался немного... ну никак мне не удается добиться того, чтобы само по себе "обнулялось" свойство ConnectionString.

Цитата(PashaPash @  18.5.2009,  19:25 Найти цитируемый пост)
Жажда приключений? smile

Вероятно, по этой же причине thomas игнорирует ORM smile


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
thomas
Дата 21.5.2009, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Приветствую всех.
Была маленькая запара на сельскохозяйственной ниве, потому не мог выйти в сеть.
Всем спасибо за обсуждение моей проблемы.


Unlocker,
Цитата

Работает ли класс таким свойством?
 У меня не сработал. Но почему я так и не нашел. Обнулялась строка соединения. Хотя все вроде бы в соответствии с описаниями C#.
Idsa, 
Цитата

есть какие-нибудь успехи с дебагом на уровне исходников .NET?
Ответ выше.

PashaPash, 
Цитата

Правильно - создавать SqlConnection, открывать и закрывать для каждой операции, а не держать один синглтон.

Idsa, 
Цитата

А вообще интересно, что побудило thomas отойти от традиционного подхода с созданием SqlConnection через using при каждом запросе...

Отвечаю сразу обоим. По мнению моего руководителя проекта, создание каждый раз объекта соединения с БД слишком накладная операция, а потому нужно иметь один раз созданный объект соединения  и использовать его по мере необходимости. Возможно он и прав. Судите сами. Вот у меня только для того чтобы отобразить дерево Группа-Категории-Субкатегории в treeView и товары субкатегории в DataGridView нужно создать четыре соединения и сделать выборку данных. А если пользователей у программы не один, а с десяток. И далее для каждого действия с данными каждый раз создавать соединение по новой. Картина получается не вполне нормальная. Программа только и делает что  создает соединения с БД. А если это все происходит не на локальном сервере в локальной сети, а через интернет?

Так что PashaPash, правильно ли создавать SqlConnection и открывать/закрывать для каждой операции?

Пока что я вернулся к своему первоначальному варианту, т.е. для каждой операции создание своего соединения.

На следующей неделе буду общаться с преподом с глазу на глаз и спрошу про 
Цитата

А судя по MSDN - вызов Close эквивалентен вызову Dispose.

Интересно что он скажет?

Хотя с другой стороны. Вот сейчас в школе закончили семестр в котором работали небольшими группами над проектами. В нашем проекте мы с успехом смогли использовать одно соединение созданное статическим классом. Но там не было каскадных вызовов соединения. Внутри каждой операции был только вызов одной команды. Классы описывали только один объект и в них не было свойств содержащих дочерние объекты, как в моем проекте.

Так что не все так однозначно. Похоже нужно глубже изучать этот вопрос и искать золотую середину.

Добавлено через 2 минуты и 43 секунды
Idsa, 
Цитата

Вероятно, по этой же причине thomas игнорирует ORM
а вот тут поподробней.  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Idsa
Дата 21.5.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(thomas @  21.5.2009,  15:24 Найти цитируемый пост)
Отвечаю сразу обоим. По мнению моего руководителя проекта, создание каждый раз объекта соединения с БД слишком накладная операция, а потому нужно иметь один раз созданный объект соединения  и использовать его по мере необходимости. Возможно он и прав. Судите сами. Вот у меня только для того чтобы отобразить дерево Группа-Категории-Субкатегории в treeView и товары субкатегории в DataGridView нужно создать четыре соединения и сделать выборку данных. А если пользователей у программы не один, а с десяток. И далее для каждого действия с данными каждый раз создавать соединение по новой. Картина получается не вполне нормальная. Программа только и делает что  создает соединения с БД. А если это все происходит не на локальном сервере в локальной сети, а через интернет?

Программа лишь создает экземпляры класса SqlConnection, сами физические соединения поддерживаются connection pool'ом и не разрываются при каждом вызове SqlConnection.Close.

Цитата(thomas @  21.5.2009,  15:24 Найти цитируемый пост)
Так что не все так однозначно. Похоже нужно глубже изучать этот вопрос и искать золотую середину. 

Так ее давно уже нашли. И имя ей - Connection Pool.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
PashaPash
Дата 21.5.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 8
Всего: 49



thomas, вот линк с подробностями: http://msdn.microsoft.com/ru-ru/library/8xx3tyca.aspx



--------------------
PM MAIL WWW   Вверх
Idsa
Дата 21.5.2009, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(thomas @  21.5.2009,  15:24 Найти цитируемый пост)
а вот тут поподробней.

Насколько я понял, ты реализуешь банальный DAL с CRUD-операциями. Все правильно? Если так, то для этих целей гораздо удобнее использовать ORM.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
thomas
Дата 21.5.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 35
Всего: 65



Idsa, 
ORM - wat is dat?  smile 


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Unlocker
Дата 21.5.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 125
Регистрация: 2.11.2007
Где: Москва - Знаменск (Капустин Яр)

Репутация: 1
Всего: 2



Цитата(thomas @  21.5.2009,  17:24 Найти цитируемый пост)
ORM - wat is dat? 

Присоединяюсь к вопросу и прошу разъяснений.

--------------------
"Если бы Шекспир был программистом, то фразу "To be or not to be" он написал бы так: 2b | ! 2b."
PM MAIL ICQ Skype GTalk Jabber   Вверх
Idsa
Дата 21.5.2009, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



http://ru.wikipedia.org/wiki/ORM
Реализации под .NET: Entity Framework, NHibernate, LINQ To SQL...


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0633 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.