我在 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();