1

我们有一个带有服务堆栈的 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;
        }
    }


}
4

0 回答 0