EF Core 2.1 - Обработка соединения при параллельных асинхронных c методах - PullRequest
0 голосов
/ 04 марта 2020

У меня есть несколько асин c методов в моем DbContext для вызова хранимых процедур. Все эти методы обрабатывают соединения, как показано ниже.

        DbConnection connection = this.Database.GetDbConnection();
        bool needClose = false;
        if (connection.State != ConnectionState.Open)
        {
            connection.OpenAsync();
            needClose = true;
        }
        }
        try {}
        finally
        {
            if (needClose)
                connection.Close();
        }

Я вызываю некоторые из этих методов параллельно. Моя строка подключения имеет MultipleActiveResultSets = True. Я получаю ошибку ниже, потому что соединение закрывается другим способом.

Недопустимая операция. Соединение закрыто

Что может быть лучше для этого? Заранее спасибо.

1 Ответ

0 голосов
/ 04 марта 2020

В настоящее время я закрываю соединение по утилизации. Это выглядит хорошо. Но если у вас есть другие предложения, пожалуйста, дайте мне знать.

    public override void Dispose()
    {
        DbConnection connection = Database.GetDbConnection();
        if (connection.State != ConnectionState.Closed)
        {
            connection.Close();
        }
        base.Dispose();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...