Вложенные запросы EF выполняются в отдельных потоках? - PullRequest
1 голос
/ 07 марта 2012

Я создаю сложную структуру с EF 4.1.Очень упрощенная версия выглядит следующим образом:

var top = from x in _context.top
          select new TopView 
          {
            field = top.field,
            sub = ( from y in x.RelatedTable
                    select new SubView
                    {
                      subfield = y.subfield,
                      subsub = ( from z in y.AnotherRelatedTable
                                 select new SubSubView
                                 {
                                   subsubfield = z.subsubfield
                                 }
                               )
                    }
                  )
          }

Видовые модели выглядят следующим образом:

public class TopView {
   string field { get; set; }
   IEnumerable<SubView> sub { get; set; }
}

public class SubView {
   string subfield { get; set; }
   IEnumerable<SubSubView> sub { get; set; }
}

public class SubSubView {
   string subsubfield { get; set; }
}

Когда я получаю объект TopView в моем контроллере (но не могу получить доступ ни к одному из свойств,через несколько секунд мой вывод показывает:

The thread '<No Name>' (0x1b44) has exited with code 0 (0x0).
The thread '<No Name>' (0x1448) has exited with code 0 (0x0).
The thread '<No Name>' (0xf34) has exited with code 0 (0x0).

Теперь, когда я удаляю самую внутреннюю структуру, чтобы SubView выглядело так:

                    select new SubView
                    {
                      subfield = y.subfield
                    }

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

Каждый вложенный запрос выполняется в своем собственном потоке? Есть ли что-то, о чем стоит беспокоиться?

1 Ответ

1 голос
/ 07 марта 2012

Каждый вложенный запрос выполняется в своем собственном потоке?

номер

Есть ли в сообщениях повод для беспокойства?

Количество

Вы должны беспокоиться о проблеме N + 1 .

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