Как правильно использовать 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()
Продвижение своими сайтами как стратегия роста и независимости