C# EF 7:如何在一对多关系中加载相关实体

C# EF 7:如何在一对多关系中加载相关实体,c#,asp.net,entity-framework,asp.net-core,entity-framework-core,C#,Asp.net,Entity Framework,Asp.net Core,Entity Framework Core,我有以下代码。 为什么我的导航属性(课程中的要求和课程中的要求)为空 public class Course : AbsEntity { [Key] public string Title { get; set; } public string Term { get; set; } public int Year { get; set; } public string

我有以下代码。 为什么我的导航属性(课程中的要求和课程中的要求)为空

    public class Course : AbsEntity {
            [Key]
            public string Title { get; set; }
            public string Term { get; set; }
            public int Year { get; set; }
            public string CourseId { get; set; }        
            public double GradePercent { get; set; }        
            public string GradeLetter { get; set; }     
            public string Status { get; set; }
            public int ReqId { get; set; }

            public Requirement Requirement { get; set; }
        }

    public class Requirement : AbsEntity {
            [Key]
            public int ReqId { get; set; }
            public string ReqName { get; set; }

            public ICollection<Course> Courses { get; set; }
        }

// In DbContext
    protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                modelBuilder.Entity<Course>().HasOne(c => c.Requirement).WithMany(r => r.Courses).HasForeignKey(c => c.ReqId);
                modelBuilder.Entity<Requirement>().HasMany(r => r.Courses).WithOne(c => c.Requirement);
            }
公共课程:AbsEntity{
[关键]
公共字符串标题{get;set;}
公共字符串项{get;set;}
公共整数年{get;set;}
公共字符串CourseId{get;set;}
公共双级百分比{get;set;}
公共字符串字母{get;set;}
公共字符串状态{get;set;}
public int requid{get;set;}
公共需求{get;set;}
}
公共类要求:AbsEntity{
[关键]
public int requid{get;set;}
公共字符串ReqName{get;set;}
公共ICollection课程{get;set;}
}
//在DbContext中
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().HasOne(c=>c.Requirement).WithMany(r=>r.Courses).HasForeignKey(c=>c.ReqId);
modelBuilder.Entity()有许多(r=>r.Courses),其中一个(c=>c.Requirement);
}

首先,您不需要配置两次关系,只需配置一次:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
   modelBuilder.Entity<Course>().HasOne(c => c.Requirement)
                                .WithMany(r => r.Courses)
                                .HasForeignKey(c => c.ReqId);          
}

谢谢你,这巧妙地解决了我的问题!
 var query= ctx.Courses.Include(c=>c.Requirement).Where(...)...;