NPGSQL TimeOutException во время команды второго чтенияC#

Место общения программистов C#
Anonymous
NPGSQL TimeOutException во время команды второго чтения

Сообщение Anonymous »

Я пытаюсь вызвать две функции для извлечения данных из базы данных Postgres, как SO:
shrong> someclass.cs

Код: Выделить всё

public static IDatabaseProvider DatabaseProvider { get; } = new PgDatabaseProvider();

public async Task Refresh()
{
var users = await DatabaseProvider.GetUsersAsync();
var profiles = await DatabaseProvider.GetProfilesAsync();
}
в моей реализации idatabaseprovider (

Код: Выделить всё

PgDatabaseProvider
), я создаю строку подключения и npgsqldatasource , которую я использую для открытия соединений и получения данных.

Код: Выделить всё

private NpgsqlDataSource _dataSource;

public PgDatabseProvider()
{
...
_dataSource = ...//creates data source from connection string
}

public async Task GetUsersAsync()
{
var results = new List();
string query = "SELECT * FROM users";

await using (var connection = await _dataSource.OpenConnectionAsync())
await using (var cmd = new NpgsqlCommand(query, connection))
await using (var reader = await cmd.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
{
...//reading data
results.Add(new User(...));
}
}
return results;
}

public async Task GetProfilesAsync()
{
...//same structure as above
}
Если я запускаю любую функцию самостоятельно, они успешны, но когда я запускаю одну, а затем другой спиной к спине, npgsql бросает Timeoutexception: Timeout во время попытки чтения на самую первую попытку executeReaderasync () во второй функции. Виртуальные соединения, которые открываются/близко к пулу соединений. Я попытался использовать npgsqlconnection.clearallpools () между ожидаемыми функциями Get, но это не сработало. Моя мысль - что -то не закрывает/не освобождает ресурсы или что -то еще, но это не особенно большие вопросы - они возвращают около 400 и 150 записей, каждый из которых маленькие (по 3 струнным полям), поэтому я не думаю, что это проблема распределения памяти. Относительно, что это происходит на первом чтении второй команды, независимо от того, в каком порядке я пробую функции получить.


Подробнее здесь: https://stackoverflow.com/questions/796 ... ad-command

Вернуться в «C#»