Отношения с личными ссылками: выбор детей и внуков - PullRequest
0 голосов
/ 23 июня 2011

Моя модель данных сущностей ADO.Net имеет модель под названием ABC, приведенную ниже (смоделирована по таблице с самоссылкой).

ABC Properties are
----------
ParentID
Child ID

ABC Navigation Properties are
----------
ParentCategory (refers to the parent category or the 0..1 side of the relationship)
SubCategories (refers to the children or the * side of the relationship, represents the navigation property for the children)

Я хочу выбрать детей и внуков для определенного идентификатора ParentID (т.е. не в верхней части иерархии).Как я могу сделать это.Может кто-нибудь, пожалуйста, предложить пример.Спасибо


Я попробовал решение, предложенное ниже в vb, но оно загружает только один уровень;

Я делаю это в VB, поэтому я прошу прощения у программистов C #.

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
        Dim ctx = New links2Entities
        Dim query = From c In ctx.PBS.Include("SubCategory.SubCategory") Where (c.Parent_ID = 7)
        For Each result As PB In query
            Debug.WriteLine("ID: {0}", result.Child_ID)
        Next
    End Sub

1 Ответ

5 голосов
/ 23 июня 2011

Если вам нужно выбрать сущность по ее Id и загрузить два уровня ее потомков, вам нужно сделать:

var query = context.ABC.Include("SubCategories.SubCategories")
                       .Where(e => e.Id == id);

В случае EF 4.1 оно должно быть:

var query = context.ABS.Include(e => e.SubCategories.Select(s => s.SubCategories))
                       .Where(e => e.Id == id);

Если вам нужно загружать все подкатегории на любую глубину, нет способа сказать это EF.

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