2012-05-29 13 views
5

मेरी संदर्भ फ़ाइल के भीतर, मैंने अपने स्थान वर्ग और प्रोग्राम कक्षा के बीच कई रिश्तों को स्थापित किया है।कई लोगों को कंडीशनिंग और सशर्त जहां

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 

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

     } 

मैं एक खोज/फ़िल्टर फॉर्म बना रहा हूं जहां उपयोगकर्ता को प्रोग्राम चुनकर स्थानों को फ़िल्टर करने में सक्षम होना होगा।

मेरा विचार जंक्शन (एम 2 एम) तालिका से पूछताछ करना था और फिर उस स्थान तालिका के साथ उसमें शामिल होना था।

समस्या यह है कि मेरे पास मेरी ऑनमोडेल क्रिएटिंग विधि के अलावा एम 2 एम तालिका का प्रतिनिधित्व करने वाला वर्ग नहीं है।

क्या मुझे यह कैसे करना है इस पर एक उदाहरण मिल सकता है?

मूल रूप से चयन * स्थानों एल से पर l.LocationId = lp.locationid और lp.programid = locationsprograms एल.पी. जो कुछ में पारित किया गया था में शामिल हो।

धन्यवाद।

उत्तर

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

या (काम करता है क्योंकि आपके Program की प्राथमिक कुंजी संपत्ति द्वारा फ़िल्टर कर रहे हैं):

var locations = dbContext.Programs 
    .Where(p => p.ProgramId == whateverWasPassedInId) 
    .Select(p => p.Locations) 
    .SingleOrDefault(); 
संबंधित मुद्दे