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