Связаны ли коллекции связанных сущностей Linq автоматически?

У меня есть набор сущностей, который является сессией для опроса. Существует свойство навигации для коллекции Ответов, которые также привязаны к объекту Вопрос (используя отношение внешнего ключа в БД).

Мне легко вызвать сборник ответов, просто выполнив

session.Responses

Это возвращает перечислимый список, что в большинстве случаев хорошо.

Однако для больших наборов данных я сталкиваюсь с концептуальной проблемой.

Если я хочу выбрать конкретный ответ из коллекции Ответов сеанса на основе элемента, учитывая, что это коллекция, будет ли это операция поиска или сканирования? Используются ли отношения FK между Ответом и Вопросом вообще?

Если нет, то было бы разумно создать словарь ключей в классе Session Partial, который берет свою коллекцию Response и соединяет ее с вопросительными ключами? Таким образом, было бы прямое стремление дать точный ответ на запрошенный вопрос.

1 ответ

Решение

LINQ над объектами использует Enumerators, которые "сканируют" коллекцию.

РЕДАКТИРОВАТЬ: Лучше всего сделать как можно больше логического объединения и фильтрации в базе данных. Когда вы загружаете словарь с результатами выражения запроса EF, запрос выполняется в базе данных, а результаты помещаются в память. В этот момент вы больше не имеете дело с выражением IQueryable, а с набором объектов IEnumerable. Другие выражения LINQ в словаре - это LINQ поверх объектов.

Другие вопросы по тегам