MVC4アプリには次のものがあります。両方のキーで負荷をフィルタリングしたいのですが、多対多の可能性がありますが、両方のキーが一緒になって一意の行を表します。必要な場合にのみこれらのコレクションを明示的にロードし、関係の両側でフィルタリングするという目標。
次のEntity.DBContextがあります。これは機能しますが、UserIdキーに対してのみ機能します。
context.UserProfiles.Include(o => o.CoachOfOrginizations).Where(p => p.UserId == UserId).Single()
また、これはそれらすべてをロードしますが、もちろんまったくフィルタリングせず、流暢なコードを適切に設定したことを示しているだけです。
context.Entry(this).Collection(t => t.AdministratorOfOrginizations).Load();
modelBuilder.Entity<UserProfile>()
.HasMany(p => p.CoachOfOrginizations)
.WithMany(t => t.Coaches)
.Map(mc =>
{
mc.ToTable("OrganizationCoaches");
mc.MapLeftKey("UserProfileID");
mc.MapRightKey("OrganizationID");
});
CoachOfOrginizationsは、UserProfileの次のプロパティです。
public ICollection<Organization> CoachOfOrginizations { get; set; }
私が欲しいのは、Organization.ID(他のキー)と現在使用されているキーp.UserIdに基づいて、元の.Includeをフィルタリングすることです。私は次のことを試しましたが、うまくいきません、何かアドバイスはありますか?「this」はUserProfileオブジェクトです。
context.Entry(this)
.Collection(b => b.CoachOfOrginizations)
.Query()
.Where(p => p.ID == orgID)
.Load();