Я делаю некоторые тесты с Dapper, но есть странная ошибка.
Даже с оператором using, если я не вызываю базу данных в течение некоторого времени, например 5 минут, следующий вызов дает мне «не вошел», следующий вызов работает.
Я создал планировщик, который вызывает БД каждую минуту и не имел ошибки, если я делал то же самое, каждые 5 минут, это выдает мне ошибку.
Я думаю, что соединения в пуле по-прежнему открыты, даже если я вызываю "открытое", "закрытое" соединение и "использование".
Создание соединения:
protected IDbConnection Connection
{
get
{
var oc = new OracleConnection(DatabaseConfig.ConnectionString);
oc.Open();
return oc;
}
}
метод:
public async Task<List<ItemLista>> GetItemListaAsync(int idLista)
{
using (var connection = Connection)
{
string nomeProcedure = "GC.PCK_ECOM_LISTA_PRESENTE.ILC_LER";
var parameters = new OracleDynamicParameters();
parameters.Add("E_TX_GC", dbType: OracleDbType.NVarchar2, size: 4000, direction: ParameterDirection.Output);
parameters.Add("E_TX_TS", dbType: OracleDbType.NVarchar2, size: 4000, direction: ParameterDirection.Output);
parameters.Add("P_ID_LISTA_LIC", dbType: OracleDbType.Decimal, value: idLista);
parameters.Add("R_REF_CUR_ILC", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output);
var result = await connection.QueryAsync<ItemLista>(nomeProcedure, parameters, commandType: CommandType.StoredProcedure);
//this connection.close changes nothing
connection.Close();
return result.AsList();
}
}
Asp.net-core 2.2
Dapper 1.50.5 (не могу использовать 1.60.1, потому что я использую Dapper.fluentMap, и он пока не совместим)
Oracle.ManagedDataAccess.Core 2.18.3