2014-01-22 3 views
2

Где ошибка в следующем коде? Уже открыт DataReader, связанный с этой Командой, который должен быть закрыт первым.Существует уже открытый DataReader, связанный с этой командой, который должен быть закрыт первым linq

«Ошибка при выполнении определения команды. Подробнее см. Внутреннее исключение».

var cat = from c in db.Question select c; 
foreach (Questions question in cat) { 
    Console.WriteLine("{0}", question.tittle); 
    Console.WriteLine("{0}", question.deskripsi); 
    Console.WriteLine("{0}", question.id_question); 
    **foreach (Categories p in question.Categories)** 
    { 
     Console.WriteLine("{0}", p.id_kategori); 
     Console.WriteLine("{0}", p.nama_kategori); 
    } 
} 
+0

Является ли это Linq-to-SQL или Linq-to-Entities? – wdosanjos

+0

Linq to Entities – user3113811

ответ

7

Вы, вероятно, не позволит несколько активных наборы результатов (MARS) в файле конфигурации. Here некоторые подробности о том, почему и как, но она всегда влечет за собой добавление записи

"MultipleActiveResultSets=True" 

строку подключения.

Однако, помимо активации MARS, то лучше нетерпеливого нагрузки Categories:

from c in db.Question.Include(q => q.Categories) select c 

, потому что в вашем коде каждой итерации foreach будет выполнять запрос к ленивой нагрузки категории (также известный как п + 1 проблема).

+0

, когда я изменяю, ошибка «Не удалось найти концептуальный тип модели для« MyStuck.Models.Category ».» FYI (я создаю модель вручную) – user3113811

+0

ОК, исключение вашего вопроса решается. Теперь у вас есть новый вопрос. –

+0

Спасибо ndudd ... – user3113811

Смежные вопросы

 Смежные вопросы