Как правильно использовать entity framework?

220
30 января 2020, 17:20

Как правильно использовать entity framework? Нужно создавать DbContext для каждого вызова, или создать один раз и использовать всё время жизни приложения?

Вариант №1 (создаём REMOTE_OFFICE_3Entities для каждого вызова)

internal sealed class Letters : IRequestsLetters
{
    public async Task<Letter> GetLetterByIdAsync(Int32 id)
    {
        using (REMOTE_OFFICE_3Entities db = new REMOTE_OFFICE_3Entities())
        {
            return await db.Letters.FindAsync(id);
        }
    }
}

Вариант №2 (единожды создаём REMOTE_OFFICE_3Entities и используем всю жизнь приложения)

internal sealed class Letters : IRequestsLetters
{
    private readonly REMOTE_OFFICE_3Entities db = new REMOTE_OFFICE_3Entities();
    public async Task<Letter> GetLetterByIdAsync(Int32 id)
    {
        return await this.db.Letters.FindAsync(id);
    }
}

Всё моё приложение и множество вызовов уже написаны по варианту №1, но сейчас когда начала появляться нагрузка, периодически я стал получать исключение такого вида:

Произошла ошибка базового поставщика в Open.
System.Data.Entity.Core.EntityException: Произошла ошибка базового поставщика в Open. ---> System.InvalidOperationException: Истекло время ожидания. Время ожидания истекло раньше, чем удалось получить подключение из пула. Возможно, все подключения в пуле уже используются и достигнут максимальный размер пула.
   в System.Data.Common.ADP.ExceptionWithStackTrace(Exception e)
--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---
   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
READ ALSO
Вычисление возраста [закрыт]

Вычисление возраста [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он соответствовал тематике «Stack Overflow на русском»

206
Строка подключения MS SQL Server в локальной сети

Строка подключения MS SQL Server в локальной сети

Как должна выглядеть строка подключения к MS SQL Server 2008 при условии, что экземпляр MS SQL Server установлен на одном из удалённых компьютеров, расположенных...

206
Юнит тесты Entity Framework

Юнит тесты Entity Framework

Хочу протестировать сервисы работы с БД через EF

181
Возврат значения из колбека c#

Возврат значения из колбека c#

Есть у меня некоторый метод:

183