2015-12-15 2 views
0

Я хотел выбрать все связанные записи из таблицы саморекламы, используя сущность framework. У меня нет определенного уровня. Это всего лишь для всех связанных записей всех детей и всех родителей. Ниже приведены некоторые примеры данных. Поэтому, если я передаю ID 5 моей функции, он должен дать мне записи с идентификатором 1,4,5,7,8.Self Reference Получите все связанные записи Родители и дети

5 является родительским идентификатором для Id 7 и 7 является родительским идентификатором для Id 8. Аналогичным образом родительский идентификатор для 5 равен 1 и 1 также является родительским идентификатором для Id 4.

Таким образом, я хотел бы выбрать все ниже и выше записи Id 5. Источник

данных

Id Name ParentId 
1 Test 1 NULL 
2 Test 2 NULL 
3 Test 3 NULL 
4 Test 4 1 
5 Test 5 1 
6 Test 6 4 
7 Test 7 5 
8 Test 7 7 

Ожидаемое

1 Test 1 NULL 
4 Test 4 1 
5 Test 5 1 
7 Test 7 5 
8 Test 7 7 
+0

Проверьте это [вопрос] (http://stackoverflow.com/questions/11929535/writing-recursive-cte-using-entity-framework-fluent-syntax-or-inline-syntax). Вам нужен рекурсивный запрос, и похоже, что EF напрямую не поддерживает это. – juharr

+0

Я не писал ничего твердого, который можно использовать в качестве базы. Я пытался читать записи ниже и выше, используя отдельные циклы, но здесь, поскольку у меня нет уровня, поэтому ему нужна какая-то рекурсия. Так что мой код не работал вообще и. Вы можете взять это с нуля. – Deb

+1

Начать здесь http://sqlfiddle.com/#!3/497b0/6. Его не полный ответ –

ответ

0

Я получил логику. Нам нужно сначала определить корневой узел, а затем найти связанное семейное дерево из корневого узла. Мы можем написать CTE, чтобы найти корневой узел, или мы можем добавить новый столбец, который будет содержать идентификатор корневого узла. Sql Fiddle With Root Node

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