Заполнение вложенного класса внешним соединением с использованием linq - PullRequest
0 голосов
/ 24 августа 2011

Я пытаюсь заполнить класс A (извините за неправильное именование) данными из EF с использованием Linq.

Получил эти классы:

public class A
{
    public string SomeA { get; set; }
    public B B { get; set; }
    public List<C> C { get; set; }
}

public class B
{
    public string SomeB { get; set; }
    public string SomeB2 { get; set; }
}

public class C
{
    public string SomeC { get; set; }
    public string SomeC2 { get; set; }
}

Мой SQL-запрос для получения всей необходимой информации выглядит так:

SELECT * FROM A
    JOIN B ON A.X = B.X
    LEFT JOIN C ON C.X = B.X

Как будет выглядеть запрос linq для заполнения A?

List<A> things = ......

Заранее спасибо

/ Lasse

1 Ответ

4 голосов
/ 24 августа 2011

Это проще, чем вы могли ожидать:

List<A> things = (
    from thing in db.As
    where thing.B.C != null
    select thing)
    .ToList();

Примечание. Чтобы это работало, ваша модель EF должна понимать, что между B и C существует отношение FK. Если это так (то, что обычно происходит, когда этот FK находится в базе данных и вы сгенерировали свою модель непосредственно из определения базы данных), EF сгенерирует свойство C для B (и наоборот).

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