2014-12-21 40 views
0

我使用實體框架6.1.1(最新)一WPF(與MahApps.MetroCaliburn.Micro)項目和所有最新的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查詢,我將用示例方法更新帖子。其餘的都是我的解決方案中的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加快數據庫連接。池中的連接對數據庫保持開放狀態,這樣當你需要時,你不必通過認證來減慢速度。最佳做法是打開數據庫連接並儘快處理它們。 –