Я видел много вопросов о самоссылающихся таблицах в Linq2Sql и о том, как с готовностью загрузить все дочерние записи для определенного корневого объекта. Я реализовал временное решение, получив доступ ко всем базовым свойствам, но вы можете видеть, что это не приносит пользы.
Дело в том, что все записи связаны друг с другом с использованием GUID корреляции. Пример ниже:
RootElement
- Id: 1
- ParentId: null
- CorrelationId: 4D68E512-4B55-44f4-BA5A-174B630A03DD
ChildElement1
- Id: 2
- ParentId: 1
- CorrelationId: 4D68E512-4B55-44f4-BA5A-174B630A03DD
ChildElement2
- Id: 3
- ParentId: 2
- CorrelationId: 4D68E512-4B55-44f4-BA5A-174B630A03DD
ChildElement1
- Id: 4
- ParentId: 2
- CorrelationId: 4D68E512-4B55-44f4-BA5A-174B630A03DD
В моем случае у меня есть доступ к correlationId, поэтому я могу получить все свои записи, выполнив следующий запрос:
from element in db.Elements
where element.CorrelationId == '4D68E512-4B55-44f4-BA5A-174B630A03DD'
select element;
Но, конечно, я хочу, чтобы эти элементы были связаны друг с другом, выполняя этот запрос:
from element in db.Elements
where element.CorrelationId == '4D68E512-4B55-44f4-BA5A-174B630A03DD' && element.ParentId == null
select element;
Мой вопрос: возможно ли объединить результаты первого запроса в качестве некоего «механизма кэширования» для запроса, в котором я получаю корневой элемент?
Спасибо за ввод.
J.