2016-07-07 113 views
0

我使用這種方法獲取我的數據庫對象PetaPoco:在web.config中PetaPoco KeepConnectionAlive使用

internal static Database GetCurrentDatabase() 
    { 
     if (HttpContext.Current == null) 
     { 
      if (Thread.GetData(Thread.GetNamedDataSlot(_databaseKey)) != null) 
       return Thread.GetData(Thread.GetNamedDataSlot(_databaseKey)) as Database; 
      else 
      { 

       var database = new Database("testDB"); 
       database.KeepConnectionAlive = true; 
       database.EnableAutoSelect = true; 
       database.CommandTimeout = 180; 
       Thread.SetData(Thread.GetNamedDataSlot(_databaseKey), database); 
       return database; 
      } 
     } 
     else 
     { 
      if (HttpContext.Current.Items.Contains(_databaseKey)) 
       return HttpContext.Current.Items[_databaseKey] as Database; 
      else 
      { 
       Database database = new Database("testDB"); 
       database.EnableAutoSelect = true; 
       database.CommandTimeout = 180; 
       database.KeepConnectionAlive = true; 
       HttpContext.Current.Items[_databaseKey] = database; 
       return database; 
      } 
     } 
    } 

我的連接字符串:

<add name="testDB" connectionString="Data Source=192.168.10.10;Initial Catalog=testDB;User Id=test;Password=test;pooling='true'; Max Pool Size=200" 
     providerName="System.Data.SqlClient" /> 

問題已經啓用了連接池。我是否必須將KeepConnectionAlive設置爲true或false?這個屬性有什麼用途?

回答

1

是,池已經被啓用和(如果你把它設置爲true,事實上,它會帶來麻煩),你不需要KeepConnectionAlive設置爲true

+0

對不起,什麼樣的麻煩呢? –

+0

就像爲同一個記錄集共享相同的Conn錯誤一樣 –

+0

對不起,你能解釋一下這是什麼意思嗎?我已經把它關掉了,但我需要了解你的寶貴意見是什麼意思。 –