2014-12-21 3 views
0

У меня есть проект WPFMahApps.Metro и Caliburn.Micro) с помощью Entity Framework 6.1.1 (Latest) и все последние MySQL.EF6.1.1 с подключением к MySQL не закрывает

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

Как я могу убедиться, что соединение закрывается должным образом после выхода из моего приложения, поэтому я не попаду в лимит подключения?

Метод запроса

public void RetrieveCourses() 
     { 
      // Query database 
      var context = new TAModelContainer(); 
      var data = context.Courses.ToList<Course>(); 

      foreach (Course course in data) 
      { 
       _courses.Add(course); 
      } 
     } 
+0

Можем ли мы увидеть ваш код, который использует базу данных? –

+0

Я использую очень простые запросы Linq, я должен обновить сообщение с помощью метода sample. Остальное - это все созданное моделью материал из EF6 в отдельном проекте библиотеки классов в моем решении. – Taerus

ответ

3

Утилизировать контекст, когда вы сделали с ним. Не делать этого может исчерпать ваш пул соединений, и вы можете не получить соединение.

public void RetrieveCourses() 
    { 
     // Query database 
     using(var context = new TAModelContainer()) 
     { 
      var data = context.Courses.ToList<Course>(); 

      foreach (Course course in data) 
      { 
       _courses.Add(course); 
      } 
     } 
    } 
+0

Спасибо, кучка. По какой-то причине я подумал, что EF справится с этим для меня. – Taerus

+0

Утилизируя свой EF-контекст, соединение Sql, которое вы используете, возвращается в пул соединений. EF использует Connecton Pool для ускорения ваших соединений с БД. Соединения в пуле хранятся в БД, поэтому, когда вам это нужно, вам не нужно проходить аутентификацию, которая может замедлить работу. Лучшей практикой является открытие ваших соединений с БД и удаление их, как только сможете. –

Смежные вопросы