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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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