Interogarea multor persoane la multe și condiționate

În fișierul meu de contextual, am creat o relație între multe și multe dintre clasa mea de locație și clasa programului.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

            modelBuilder.Entity()
            .HasMany(u => u.Programs)
            .WithMany(r => r.Locations)
            .Map(m =>
            {
                m.ToTable("LocationsPrograms");
                m.MapLeftKey("LocationId");
                m.MapRightKey("ProgramId");
            });

        }

Creez un formular de căutare/filtrare unde utilizatorul va trebui să poată filtra locațiile selectând un program.

Gândul meu a fost să interoghez masa de joncțiune (M2M) și apoi să alătur acea copie de rezervă cu tabela de locații.

Problema este că nu am o clasă care să reprezinte tabelul M2M altfel decât în ​​metoda OnModelCreating.

Pot să vă dau un exemplu despre cum să faceți acest lucru?

În principiu, selectați * din locații l se alăture locațiilorprogramuri lp pe l.locațieId = lp.locationid și lp.programid = oricare a fost trecut în.

Mulțumesc.

0

1 răspunsuri

var locations = dbContext.Locations
    .Where(l => l.Programs.Any(p => p.ProgramId == whateverWasPassedInId))
    .ToList();

Sau (funcționează pentru că filtrați după proprietatea cheie Program ):

var locations = dbContext.Programs
    .Where(p => p.ProgramId == whateverWasPassedInId)
    .Select(p => p.Locations)
    .SingleOrDefault();
0
adăugat