Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC4通过两个键显式加载多对多EF查找和筛选_Asp.net Mvc_Entity Framework_Lambda_Fluent - Fatal编程技术网

Asp.net mvc MVC4通过两个键显式加载多对多EF查找和筛选

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() 这也会加载所有代码,但当然根本不会过滤,只是向您展

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

您可以在一个查询中同时进行这两种筛选。看


很好,这是可行的,现在我只需要把它移到组织对象上,因为我真正需要的是这些对象的集合,但代码是双向的!谢谢。我很快给了你答案,为了让它正常工作,我必须做以下工作…我需要最终的结果是一个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);