按住F5后,ormlite可用连接错误

时间:2013-09-20 07:33:10

标签: servicestack ormlite-servicestack

我们有一个带有服务堆栈的Web应用程序和数据服务应用程序。当我浏览主页面(查询数据服务)并按住F5按钮一段时间后,关闭连接。

“ExecuteReader需要一个开放且可用的连接。连接的当前状态已关闭。”

像这样添加OrmLiteConnectionFactory;

container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(ApplicationConfigGlobal.DbConnString, SqlServerDialect.Provider)).ReusedWithin(ReuseScope.Request);

我们的回购实施

public class BaseRepository : IDisposable
{
    public IDbConnectionFactory DbFactory { get; set; }

    private IDbConnection _dbConn;
    protected IDbConnection DbConn
    {
        get
        {
            return _dbConn ?? (_dbConn = DbFactory.Open());
        }
    }

    public void Dispose()
    {
        if (_dbConn != null)
            _dbConn.Dispose();
    }

在您看来我错过了哪些细节?

我们已经完成了如下的解决方法。但我们还没有在生产环境中测试它。

public class BaseRepository
{
    public IContainer Container { get; set; }

    public IDbConnection DbConn
    {
        get
        {
            var conn = Container.TryResolve<IDbConnection>();
            if (conn.State == ConnectionState.Closed)
            {
                conn.Close();
                conn.Open();
            }
            return conn;
        }
    }


}

0 个答案:

没有答案