2012-07-11 87 views
1

請求結束後請求連接到我的DatabaseFactory的作用域是否釋放我的數據庫連接?Ninject和連接請求範圍

kernel.Bind<IDatabaseFactory>().To<DatabaseFactory<MySqlConnection>>().InRequestScope().WithConstructorArgument("connectionString", Config.Data.MySQLConnection); 


public class DatabaseFactory<T> : Disposable, IDatabaseFactory where T : IDbConnection, new() 
    { 
     private readonly string _connectionString; 
     private IDbConnection _dataConnection; 

     public DatabaseFactory(string connectionString) 
     { 
      _connectionString = connectionString; 
     } 

     #region IDatabaseFactory Members 

     public IDbConnection Get() 
     { 
      return _dataConnection ?? (_dataConnection = new T { ConnectionString = _connectionString }); 
     } 

     #endregion 

     protected override void DisposeCore() 
     { 
      if (_dataConnection != null) 
       _dataConnection.Dispose(); 
     } 
} 

回答

2

如果使用的Ninject.Web.MVC擴展,則這些對象都保證一旦請求目的通過垃圾收集器(GC)(來自here)收集以被設置

+0

它通過使用InRequestScope從交似乎,它會在請求的末尾放置DBFactory。我注意到您發送的信息中有錯嗎? – 2012-07-12 16:00:21

+0

是的,你是正確的,那就是你需要的rgt? – VJAI 2012-07-12 16:05:21