2016-07-07 32 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

对不起,你能解释一下这是什么意思吗?我已经把它关掉了,但我需要了解你的宝贵意见是什么意思。 –