2014-10-08 2 views
1

У меня есть классыEntity Framework - Загрузка только определенные строки в навигационном собственности

Address 
PeopleAddress //join table with a column called current 
People   // my main table, with a IList<PeopleAddress> 

modelBuilder.Entity<People>() 
      .HasMany<PeopleAddress>(m => m.CurrentAddresses) 
      .WithRequired() 
      .HasForeignKey(m => m.PeopleId); 

I (всегда) хотят, чтобы загрузить только PeopleAddress-х у людей, где PeopleAddress.Current == 1. строки с PeopleAddress.Current = = 0 для приложения не требуется. Как это достичь? Это возможно? Спасибо.

PS: Я не могу использовать Include в зависимости от контекста конкретизируется во многих местах, и мне нужно сделать это в OnModelCreating(DbModelBuilder modelBuilder)

ответ

0

Для этой работы отложенной загрузки должна быть отключена, давая вам полный контроль над которой данные загружен.

Сделайте запрос на таблице PeopleAddress и убедитесь, что данные People загружаются также через навигационное свойство в PeopleAddress.

public virtual People People { get; set; } 

PeopleAddress.Include(pa => pa.People).Where(pa => pa.Current == 1) 
0

Попробуй

context.People.Include("PeopleAddress") 
       .Select(t=> new { t, 
           PeopleAddress= t.PeopleAddress 
               .Where(p=>p.Current==1)}); 
Смежные вопросы