一对多linq Eager负载

时间:2017-11-10 19:32:00

标签: c# asp.net linq

我正在使用以下技术:C#,SQL Server,ASP.NET和Entity Framework以及Linq。 我有很多关系,使用急切的负载。 我希望获得所有刻有学生的课程。正如你所看到的,我有一对多关系,从学生到题写表。

模型类:

public class Courses
{
    [Required]
    public int Id { get; set; }
    //more properties here
     public student stud { get; set; }
}

public class Enroll
{
    [Key]
    public intId { get; set; }
    //properties here
    [Required]
    public string StudentId{ get; set; }
    public Courses Courses{ get; set; }
}
public class student{
 public intId { get; set; }
  //other properties
  public Inscripe Inscription {get;set}
}

这就是我的控制器:

public IEnumerable<course> GetCoursesStudent(Int studentId)
{
     //some code here to validate
     var result = _dbContext
.Enroll.Include(c => c.Courses)
.Where(c => c.StudentId == studentId)
.SelectMany(c => c.Courses).ToList();
}

问题: 我从SelectMany收到一个错误:方法的类型isgument Queribly.selectMany(IQueryableExpression&gt;&gt;不能用于使用。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您为IEnumerable指定的类型是错误的。它应该是“课程”而不是“课程”:

public IEnumerable<Courses> GetCoursesStudent(Int studentId)
{
    var result = _dbContext
        .Enroll
        .Include(c => c.Courses)
        .Where(c => c.StudentId == studentId)
        .SelectMany(c => c.Courses)
        .ToList();
}

Enroll类的“Courses”属性应该是可枚举的:

public class Enroll
{
    [Key]
    public intId { get; set; }

    [Required]
    public string StudentId { get; set; }
    public IEnumerable<Courses> Courses { get; set; }
}