public IQueryable<Application> GetAppById(Guid Id)
{
return Repository.Query().Where(c => c.Id == Id).Select(c => c.App)
}
Я получил этот код выше, и кажется, что он не возвращается правильно. Если я вызываю другой репозиторий в БД, такой как Repository2.Query(). Где (?? код ??). Я получил ошибку ниже.Ошибка при вызове другого репо - «Существует уже открытый DataReader, связанный с этой командой, который должен быть закрыт первым»
ОШИБКА: { «Существует уже открытая DataReader, связанные с этой командой, которая должна быть закрыта первая»}
Однако, когда я изменить возвращение к ICollection <> это ответы прямо ,
public ICollection<Application> GetAppById(Guid Id)
{
return Repository.Query().Where(c => c.Id == Id).Select(c => c.App).ToList();
}
отладить IQueryable возвращение, нет никакой ошибки, но я не смог найти найти данные, которые он извлекает. Ошибка возникает при вызове другого в репо.
Вы открываете DataReader в том же соединении (или вызываете какой-либо код, который делает) где-либо еще в вашей программе до этой точки? Возможно, вы пытаетесь использовать DbContext из нескольких потоков? – yaakov
I debug IQueryable return, нет ошибки, но я не смог найти найденные данные. Ошибка возникает при вызове другого в репо. –
user1960948
У меня такое ощущение, что различие не в «IQueryable», а в отношении «ICollection», но в том, что вы вызываете '.ToList()', который будет полностью оценивать ваш ленивый запрос на месте. Является ли 'Repository.Query()' ваш собственный код или это стандартная структура (например, EntityFramework))? – yaakov