排除子导航属性我有两个实体:EF:包括导航属性和在同一时间
public class Student
{
public int Id { get; set; }
public virtual ICollection<Exam> PExams { get; set; }
}
public class Exam
{
public int Id { get; set; }
public DateTime Date { get; set; }
public int PStudentId { get; set; }
public virtual Student PStudent { get; set; }
}
我描述他们的DbContext:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Exam>()
.HasRequired(d => d.PStudent)
.WithMany(d => d.PExams)
.HasForeignKey(d => d.PStudentId);
}
我关闭延迟加载Configuration.LazyLoadingEnabled = false;
和添加的属性用于DBContext中的考试和学生。
public DbSet<Exam> Exams { get; set; }
public DbSet<Student> Students { get; set; }
现在我试着拿到考试列表。
await m_DataContext.Exams.ToListAsync();
此代码让我列出具有空属性PStudent的考试(如预期的那样)。所以我改变了我的代码,以未来:
await m_DataContext.Exams.Include(d=>d.PStudent).ToListAsync();
我预计我会收到与充满财产PStudent和PStudent财产PExams考试将是空的名单,但有数据(考试的列表)。当我包含主要导航属性时,应该如何更改以使子导航属性为空?
您是否已将“DbSet”添加到上下文中? –
@IlyaChumakov是的,我忘了提及这一点。 – RredCat
为什么你想要它是空的?它包含了它们,因为它无论如何都是物化的,所以它是有意义的。 –