6

Context ファイル内で、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 テーブルを表すクラスがないことです。

これを行う方法の例を得ることができますか?

基本的に select * from locations l join locationsprograms lp on l.LocationId = lp.locationid および lp.programid = 渡されたものは何でも。

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

4

1 に答える 1

7
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();
于 2012-05-29T17:32:12.237 に答える