2012-05-29 17 views
5

コンテキスト・ファイル内で、私はLocationクラスとProgramクラスとの間に多対多の関係を設定します。多対多および多条件問合せ

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

     } 

私は、ユーザーがプログラムを選択することで、場所をフィルタリングすることができるようにする必要があります検索/フィルタフォームを作成しています。

私の考えは、ジャンクション(M2M)テーブルをクエリし、そのバックアップをロケーションテーブルと結合することでした。

問題は、私のOnModelCreatingメソッド以外のM2Mテーブルを表すクラスがないことです。

これを行う方法の例がありますか?基本的には

リットルを渡されたものは何でもl.LocationId = lp.locationidとlp.programid =上locationsprograms LPに参加場所から*を選択します。

、ありがとうございました。

答えて

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(); 
関連する問題