Как решить проблему Entity Framework Open DataReader - PullRequest
0 голосов
/ 28 ноября 2018

После получения этой ошибки:

MySqlException: уже существует открытый DataReader, связанный с этим подключением, который должен быть закрыт первым.

Мне не удалось запросить илиполучить наборы результатов, потому что я делал запросы, пока EF все еще лениво загружал другие вещи, которые я запрашивал ранее.

Нашел много возможных решений для решения этой проблемы, которыми я поделился в ответе ниже.

1 Ответ

0 голосов
/ 28 ноября 2018

Если вы не упомянули тип загрузка в конфигурации EF, EF по умолчанию будет использовать отложенную загрузку.

Существуют различные способы отменить «Соединение открыто»:

  1. Добавляя MARS к строке подключения EF, прочитайте также этот , прежде чем прыгать в нее.
  2. Используйте ' USING ', но для этого вам нужно создавать новый объект-сущность каждый раз, когда он удаляется.
  3. Конвертировать ваш результат в типы Generics или в локальные типы объектов, в моем случае я преобразовал его в ToList (), который помог решить мою проблему, и я смог запросить новый набор результатов из контекста.

У меня есть базовый класс, который предоставляет мне объект контекста, поэтому я не использовал Использование оператора для создания нового контекста каждый раз, когда я хотел запросить контекст.

не стесняйтесь редактировать любые ошибки, все еще изучая EF и его поведение.

...