"从池中获取连接之前经过的超时时间",如何测试?

时间:2014-12-17 19:00:46

标签: c# nhibernate connection connection-pooling

我有一个DAL / Repository类来管理与数据库的连接,所有调用都必须经过这一层。我实现了这样的代码:

public class DataAccessLayer
{
    //SCRUD Methods
    public IList<T> Get<T>(Criteria criterias) where T : class
    {
        using (IConnection connection = ConnectionFactory.GetConnection("myConName"))
        {
            ICommand command = connection.GetCommand();
            command.CommandText = myMapper.GenerateQuery();

            using (IDataReader dataReader = command.ExecuteReader())
            {
                while (dataReader.Read())
                {
                    //Do something here
                }
            }
        }
    }
}

我的ConnectionFactory如下所示:

public class ConnectionFactory
{
    public static IConnection GetConnection(string conName)
    {
        return new SqlConnection(ConfigurationManager.ConnectionStrings[conName].ConnectionString);
    }
}

我认为using等于tryfinallyDispose()。 但是,上传这个新版本(我们之前使用NHibernate来管理会话)开始在生产中导致此错误。 我还能尝试什么,我如何测试并确保在生产中不会发生这种情况?

编辑:值得注意的是我们开始删除旧的NHibernate实现,但由于项目已经相当大,我们仍在使用NHibernate与这个新的数据访问层结合使用。这可能是原因吗? NHibernate是否会垄断连接池,甚至在遵循(据称)良好做法后会出现此错误? 或者这可能来自错误的NHibernate实现?

0 个答案:

没有答案