Entity Framework: Вызов «Read», когда DataReader закрыт
Я периодически получаю эту проблему, когда обрабатываю свой сервис параллельными асинхронными вызовами.
Я понимаю, что читатель доступен при вызове .ToList () в моем определенном EF-запросе.
Я хотел бы выяснить, каков наилучший способ построения запросов EF, чтобы избежать этого, и подобных проблем.
Моя архитектура выглядит следующим образом:
Мой слой данных сущностей - это статический класс со статическим конструктором, который создает экземпляры моих сущностей (_myEntities). Он также устанавливает свойства моих объектов, таких как MergeOption.
Этот статический класс предоставляет общедоступные статические методы, которые просто обращаются к сущностям.
public static GetSomeEntity(Criteria c) {
...
var q = _myEntitites.SomeEntity.Where(predicate);
return q.ToList();
}
Это работало в производственном процессе в течение некоторого времени, но ошибка выше и ошибка здесь происходят периодически, особенно при больших нагрузках от клиентов.
В настоящее время я также устанавливаю MultipleActiveResultSets = True в строке подключения.