Entity Framework - загрузка только определенных строк в навигационном свойстве

1

У меня есть классы

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);

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

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

Теги:
entity-framework

2 ответа

0

Попробуй

context.People.Include("PeopleAddress")
              .Select(t=> new { t,
                                PeopleAddress= t.PeopleAddress
                                                .Where(p=>p.Current==1)});
0

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

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

public virtual People People { get; set; }

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню