Будет ли мое SQL-соединение оставаться открытым после заполнения моего словаря - PullRequest
3 голосов
/ 09 сентября 2010

В приведенном ниже примере кода будет ли мое подключение к контексту данных оставаться открытым после завершения метода ListOfLists?Нужно ли явно закрывать его или он останется открытым и будет доступен для других методов.

public static Dictionary<int, string > ListOfLists()
        {
            try
            {
                ListDataDataContext db = new ListDataDataContext(GetConnectionString("Master"));

                return db.ListMatchingHeaders
                    .Select(r => new { r.ListRecNum, r.ListName })
                    .ToDictionary(t => t.ListRecNum, t => t.ListName);
            }
            catch (Exception)
            {
                MessageBox.Show("Could not connect to database, please check connection and try again", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return null;
            }
        }

1 Ответ

2 голосов
/ 09 сентября 2010

Это все еще открыто.Вам нужно будет явно удалить / закрыть соединение, или, возможно, у вас могут возникнуть проблемы с памятью или пулом соединений.Я рекомендую вам обернуть свой контекст вокруг блока using.

public static Dictionary<int, string> ListOfLists()
{
    try
    {
        using (ListDataDataContext db = new ListDataDataContext(GetConnectionString("Master")))
        {
            return db.ListMatchingHeaders
                .Select(r => new { r.ListRecNum, r.ListName })
                .ToDictionary(t => t.ListRecNum, t => t.ListName);
        }
    }
    catch (Exception)
    {
        MessageBox.Show("Could not connect to database, please check connection and try again", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return null;
    }
}
...