LINQ Join выдает ошибку: «Уже существует открытый DataReader, связанный с этой командой, который должен быть закрыт первым» - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть соединение Linq, и я заполнил viewmodel, используя это соединение. При выполнении этого соединения произошла ошибка:

Уже существует связанный с этой командой открытый DataReader, который должен быть закрыт первым

Ниже мое соединение

public List<GallerySisterComanyVM> GetAllGallery()
{
    var list = (from GI in uow.Repository<GalleryImage>().GetAll()
        join SC in uow.Repository<SisterCompany>().GetAll() on GI.SisterCompanyId equals SC.SisterCompanyId
        select new GallerySisterComanyVM
        {
            GalleryImageId=GI.GalleryImageId,
            Status=GI.Status,
            Image=GI.Image,
            SisterCompanyName=SC.SisterCompanyName
    }).OrderByDescending(x=>x.GalleryImageId).ToList();

    return list;
}

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Проверьте файл конфигурации web.config или. json секреты для строки подключения SQL, используемой для запуска контекста, и найдите бит «MultipleActiveResultSets = True».

Если это не так существует, попробуйте добавить его в конец строки SQL и повторите попытку.

Подробнее см. здесь

0 голосов
/ 04 февраля 2020

Предположим, это связано с тем, что первый запрос к репозиторию все еще выполняется при вызове второго. Как насчет запроса контекста напрямую вместо хранилища или создания объединенного запроса в хранилище в качестве отдельного метода?

...