У меня есть классы
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)
Попробуй
context.People.Include("PeopleAddress")
.Select(t=> new { t,
PeopleAddress= t.PeopleAddress
.Where(p=>p.Current==1)});
Для этого работать с ленивой загрузкой следует отключить, давая вам полный контроль над загрузкой данных.
Сделайте запрос в таблице PeopleAddress и убедитесь, что данные People загружены также через навигационное свойство в PeopleAddress.
public virtual People People { get; set; }
PeopleAddress.Include(pa => pa.People).Where(pa => pa.Current == 1)