繁体   English   中英

实体框架列表将所有属性返回到映射模型

[英]Entity Framework list return all properties to mapped models

我有三个班级:学生,科目和年级。

public class Grades
{
    [Key]
    public int Id { get; set; }
    public Student Student { get; set; }
    public Subject Subject { get; set; }
    public int Year { get; set; }
    public string Grade { get; set; }
}

学生班

 public class Student
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; }
        public string Gender { get; set; }
        public string Nationality { get; set; }
    }

学科课

public class Subject
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
}

我想返回所有成绩,但是扩展了Student和Subject的属性,例如我可以访问Grade.Name

年级,性别

年级,国籍

年级

年级

而不是Grade.Student.Name

年级,学生,性别

年级,学生,国籍

使用这些表达式扩展数据。 请注意,它们将不是Grade类,但将是具有所需属性的匿名类。 如果需要将这些项目传递给其他方法,则必须创建具有这些属性的显式类。 否则,您可以使用相同的方法直接访问它们。 就像expandedGrades.First().Name

var expandedGrades =
    DBContext.Grades.Select(grade =>
    new
    {
        Name = grade.Student.Name,
        Gender = grade.Student.Gender,
        Nationality = grade.Student.Nationality,
        Year = grade.Year,
        Grade = grade.Grade
    });

要么

var expandedGrades =
                from grade in DBContext.Grades
                select new
                {
                    Name = grade.Student.Name,
                    Gender = grade.Student.Gender,
                    Nationality = grade.Student.Nationality,
                    Year = grade.Year,
                    Grade = grade.Grade
                };

假设您在“学生”,“科目”和“成绩”表之间设置了适当的关系。 在实体框架中,您可以使用.include来完成工作。

一个基本的例子:

Blog blogs = context.Blogs 
                    .Include(b => b.Posts) 
                    .ToList(); 

现在,您可以直接使用blogs.Posts

参考: https : //msdn.microsoft.com/zh-cn/data/jj574232.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM