2014-09-15 3 views
1

я нашел этот http://msdn.microsoft.com/en-US/data/jj574232 однако это, кажется, работать только на единое целоеEF6 Загрузка подмножество связанных объектов, основываясь на какой-то фильтр

var blog = context.Blogs.Find(1); 

// Load the posts with the 'entity-framework' tag related to a given blog 
context.Entry(blog) 
    .Collection(b => b.Posts) 
    .Query() 
    .Where(p => p.Tags.Contains("entity-framework") 
    .Load(); 

Поскольку блоги не только один объект ... а скорее коллекция и само по себе. Кто-нибудь знает, как переписать это так, чтобы .Entry работает над коллекцией блогов. Я не могу найти какую-либо документацию, если возможно что-то подобное

Это означает, что вам не нужно было бы захватывать один, в частности, и выполнять операции над ним, но он будет циклически перебирать каждый и выполнять операцию.

context.Blogs.ForEach(entity in Blogs).Collection(b => b.Posts) 
    .Query() 
    .Where(p => p.Tags.Contains("entity-framework") 
    .Load(); 
+0

Поскольку у вас уже есть блог коллекции вы можете сделать что-то вроде –

+0

возможного дубликата [EF: Include с тем, где пунктом] (http://stackoverflow.com/ questions/16798796/ef-include-with-where-clause) –

+0

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

ответ

0

Вы можете загрузить соответствующий Explicitly только для одного лица. Если вам нужны данные, связанные с нагрузкой для нескольких объектов, вам необходимо загрузить связанные данные Eagerly.

0

Я думаю, что это следует сделать трюк:

var posts = context.Blogs 
        .SelectMany(x => x.Posts) 
        .Where(x => x.Tags.Contains("entity-framework"); 
+0

Проблема в том, что она вернет сообщение, где теги содержат бла-бла-бла, а не блоги, с сообщением, где теги содержат бла-бла-бла ... нужно отфильтровывать объекты нижнего уровня, но все же возвращать все сущности высшего уровня ... это сложная часть. хотел сделать это, не используя все виды анонимных прогнозов, вызывающих уродливость – DRobertE