LiNQ для юридических лиц, включить меньше - PullRequest
4 голосов
/ 08 марта 2010

Если вы создаете выражение LinQ to entity для ClassA, где A имеет отношение к ClassB, например:

var temp = from p in myEntities.ClassA.Include("ClassB")
           where ...
           select p;

Вы получите набор ClassA: s со ссылкой на ClassB. Дело в том, что мне не нужно загружать ВСЕ ссылки на ClassB, только некоторые из них. Но я не хочу перебирать список ClassA: s и загружать их по отдельности, я хочу, чтобы мои операции с базой данных были меньше и больше вместо чтения маленьких кусочков тут и там.

Можно ли наложить какие-либо ограничения на то, какие ссылки включать, или вы должны принять этот стиль "все или ничего"?

Ответы [ 2 ]

1 голос
/ 08 марта 2010

Да, вы должны проект вместо использования Include:

var from p in myEntities.ClassA
    where ...
    select new 
    {
        ClassA = p,
        ClassBs = from q in p.ClassB
                  where (something)
                  select q
    };

Загружает только указанные классы B.

0 голосов
/ 08 марта 2010

Вы можете сделать что-то вроде этого:

var temp = from p in myEntities.ClassA
           select new { ClassA = p, 
                        ClassB = p.ClassB.Where(b => b.SomeProp == somevalue) };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...