Средство чтения данных Entity Framework уже открывает вложенный цикл объектов - PullRequest
1 голос
/ 13 ноября 2010

У меня есть два списка сущностей, которые извлекаются из базы данных, они используют один и тот же контекст и одну и ту же строку подключения. У них есть свойства навигации, и они прекрасно загружаются, когда я получаю их из контекста, т.е. IQueryable<EntityA> A = context.EntityA.Include("V"), IQueryable<EntityB> B = context.EntityB.Include("V")

Существует вложенный цикл, т. Е.

foreach(EntityA a in A) {
  foreach (EntityB b in B) { 
    if (b.V.property == a.V.property) {
      // do something 
    } 
  }
}

Когда он попадает в EntityB в этом цикле, генерируется уже открытое исключение для источника данных. Я понимаю, почему это происходит, потому что они используют одну и ту же строку подключения и один и тот же текст, но я не уверен, что это за решение. Спасибо

1 Ответ

0 голосов
/ 13 ноября 2010

Я не совсем уверен, что ваш паттер доступа к данным (шаблон репозитория и т. Д.), Но я бы попытался выполнить итерацию где-то перед циклом "foreach" и выполнить цикл из памяти. Вы можете использовать простой ToList() вместо циклического перебора по IQueryable<T>

Вы можете напрямую запрашивать список или куда бы вы ни вводили свой IQueryable, просто добавьте в список в конце. Это все, что я могу предложить, пока не увижу больше кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...