Asp.net mvc MVC4通过两个键显式加载多对多EF查找和筛选
我在MVC4应用程序中有以下内容。我想通过两个键过滤负载,可以是多对多,但两个键一起代表一个唯一的行。目标是仅在需要时显式加载这些集合,并由关系双方进行筛选 我有下面的Entity.DBContext,它可以工作,但只适用于UserId键Asp.net mvc MVC4通过两个键显式加载多对多EF查找和筛选,asp.net-mvc,entity-framework,lambda,fluent,Asp.net Mvc,Entity Framework,Lambda,Fluent,我在MVC4应用程序中有以下内容。我想通过两个键过滤负载,可以是多对多,但两个键一起代表一个唯一的行。目标是仅在需要时显式加载这些集合,并由关系双方进行筛选 我有下面的Entity.DBContext,它可以工作,但只适用于UserId键 context.UserProfiles.Include(o => o.CoachOfOrginizations).Where(p => p.UserId == UserId).Single() 这也会加载所有代码,但当然根本不会过滤,只是向您展
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");
});
您可以在一个查询中同时进行这两种筛选。看
很好,这是可行的,现在我只需要把它移到组织对象上,因为我真正需要的是这些对象的集合,但代码是双向的!谢谢。我很快给了你答案,为了让它正常工作,我必须做以下工作…我需要最终的结果是一个ICollection…所有的.ToList()看起来都很低效。var coach=queryCoaches.AsEnumerable().Select(a=>a.Orgs.ToList();CoachofGenizations=Coach[0].ToList();
public ICollection<Organization> CoachOfOrginizations { get; set; }
context.Entry(this)
.Collection(b => b.CoachOfOrginizations)
.Query()
.Where(p => p.ID == orgID)
.Load();
var query = context.UserProfiles
.Where(p => p.UserId == UserId)
.Select(p => new { p, Orgs = p.CoachOfOrginizations.Where(o => o.ID == orgID) });
var profiles = query.AsEnumerable().Select(a => a.p);