Конференция ".Net" » лишний коннект [C#]
 
  • alex_*** © (08.12.05 10:55) [0]
    в классе делаем поле SqlConnection conn;
    в одном из методов передаем его в другой класс:

    Conn.Open();// - получаем коннект
    Test_conn t = new Test_conn();
    t.Test(conn);
    ...
    public class Test_conn
    {
     public void test(SqlConnection c)
     {
      if (c.State == ConnectionState.Closed)
       Console.WriteLine("***");
     }

    }


    при выходе из t.Test(conn); получаем еще один коннект. Что странно. Кто-ть может сказать что-нибудь по этому поводу?
    Причем если test делаем в своем классе, то коннект один.
  • DiamondShark © (08.12.05 11:40) [1]
    Сталкивались с таким моментом.
    Закономерность появления второго коннекта так и не уловили.
    Единственное, что выяснилось, если запретить пулинг коннектов, то их становится в точности столько, сколько должно быть по тексту.
  • alex_*** © (08.12.05 12:08) [2]
    мда. Эот все хитрый пул. Причем больше 2-х соединений не становится
  • seg (08.12.05 15:09) [3]
    А чем помешал второй коннект?
  • alex_*** © (08.12.05 15:43) [4]
    дело принципа. Понимать что происходит в системе
  • alex_*** © (08.12.05 15:43) [5]
    транзакции опять же по-другому делать надо
  • seg (08.12.05 15:51) [6]
    Здесь вряд-ли кто-нибудь даст четкий ответ.
    Обратись к настоящим специалистам по .NET.
  • seg (08.12.05 15:53) [7]
    Хотя в другой ветке Вы восхощались гибкостью управления пулом соединений...
  • alex_*** © (08.12.05 15:57) [8]
    я могу и здесь повосхищаться. Пул это вещь. Если я чего-то не понимаю, это не значит что это плохо. Сам-то что сидишь здесь. Настоящие спецы живут в MS, надо думать? На RSDN толкового тоже ничего не сказали
  • seg (08.12.05 16:21) [9]
    Я просто хочу понять, стоит переходить на .NET, или подождать?
  • alex_*** © (08.12.05 16:23) [10]
    тебе для чего? Ты работаешь или учишься?
  • seg (08.12.05 16:48) [11]
    Работа программиста связана с постоянной учебой.
  • alex_*** © (08.12.05 16:53) [12]
    тогда что есть "переходить" как начальство скажет, так и будешь работать
  • seg (08.12.05 17:04) [13]
    Начальство скажет переходить или не переходить после того, как я дам начальству веские причины необходимости перевода системы из 1200 таблиц и 500 форм на .NET.
    А тут все какими-то фенечками от .NET восторгаются.
  • alex_*** © (08.12.05 18:16) [14]
    вы хотите переписать но не знаете на что? Переписывать на незнакомую систему не надо в любом случае
  • ИА (08.12.05 19:27) [15]

    > в классе делаем поле SqlConnection conn;
    > в одном из методов передаем его в другой класс:
    >
    > Conn.Open();// - получаем коннект
    > Test_conn t = new Test_conn();
    > t.Test(conn);
    > ...
    > public class Test_conn
    > {
    >  public void test(SqlConnection c)
    >  {
    >   if (c.State == ConnectionState.Closed)
    >    Console.WriteLine("***");
    >  }
    > }
    >
    > при выходе из t.Test(conn); получаем еще один коннект. Что
    > странно. Кто-ть может сказать что-нибудь по этому поводу?
    >  
    > Причем если test делаем в своем классе, то коннект один.
    >


    Попробуйте указать Min Pool Size=0 прямо в connection string (оно 0 по умолчанию должно быть, но все-таки).
    Вообще это выглядит как попытка добавить дополнительную connection в pool (так как вы используете одну, и она не в poole находится).
  • alex_*** © (08.12.05 19:52) [16]
    видимо сессия не возвращается в пул при вызове test, и система решает что надо еще сессию создать. Надо попробовать сессию в пул возвратить.
    p.s.
    Как-то дико с непривычки каждый раз conn.Close()/Open() давать :)
  • ИА (08.12.05 22:47) [17]

    > видимо сессия не возвращается в пул при вызове test, и система
    > решает что надо еще сессию создать. Надо попробовать сессию
    > в пул возвратить.

    Этого не должно случиться если min pool size = 0
    Попробуйте явно задать в connection string и сообщите нам о результатах
 
Конференция ".Net" » лишний коннект [C#]
Есть новые Нет новых   [120170   +2][b:0][p:0.001]