我正在做一个使用EF Core和。net Core的项目。
我有两个实体类。它们是一对多关系。假设是'Student' N <----->1"年级"。
public class Student{
public string Id {get;set;}
public string Name {get;set;}
public string GradeId {get;set;}
public Grade grade {get;set;}
}
public class Grade{
public string Id {get;set;}
public string StudentGrade {get;set;}
}
My LINQ to eager load student like this
_dbcontext.Student.Include(s => s.Grade).ToList();
有时,我创建一个"Student"记录,但我没有创造"成绩"。为它。因此,Grade将为null。由于我使用WebAPI来完成这项工作,我需要返回嵌套的JSON,其中总是包含"Grade"及其性质是否"等级";
最简单的解决方案是在物化之后初始化属性:
var students = _dbcontext.Student
.Include(s => s.Grade)
.AsNoTracking()
.ToList();
Grade emptyGrade = null;
foreach(var s in students)
{
if (s.Grade == null)
{
emptyGrade ??= new Grade();
s.Grade = emptyGrade;
}
}
还有另一个自定义投影选项
var query =
from s in _dbcontext.Student
select new Student
{
Id = s.Id,
Name = s.Name,
GradeId = s.GradeId,
grade = s.grade ?? new Grade()
};
var students = query.ToList();