如何使用 EF 的导航属性访问表的更多属性



>我有学生和成绩表,有一对多的关系

Student
======
stud_id (pk)
stud_name
grade_id(fk)
Grade
=====
grade_id
grade_name

我的模型/实体类如下

Student
======
public int stud_id {get; set;}
public string stud_name {get; set;}
public int grade_id(fk) {get; set;}
public Grade grade {get; set;}
Grade
=====
public int grade_id {get; set;}
public string grade_name {get; set;}
public ICollection<Student> students {get; set;}

我有一个 DOT 类来处理 LINQ 查询

StudentDomain
============
public int stud_id {get; set;}
public string stud_name {get; set;}
public int grade_id(fk) {get; set;}
public Grade grade {get; set;}

在我的DataAccessRepository类中,我有一个方法

public IEnumerable<StudentDomain> GetStudent(int stud_id)
{
var result=  from st in db.Student
join gr in db.Grade on st.grade_id==gr.grade_id
select new StudentDomain
{
stud_id= st.stud_id,
stud_name= st.stud_name,
grade_id= gr.grade_id
//here I want to add grade name just to display for the 
user but not to store in the database table
}
return result.ToList();
}

我想在浏览器中显示成绩 ID 的等效成绩名称,但我不希望它存储在数据库表中。如何访问成绩名称?

我觉得你对LINQ查询有误解,你不应该通过linq查询来存储任何东西,只要把gradename属性放在你的StudentDomain类中,如下所示

StudentDomain
============
public int stud_id {get; set;}
public string stud_name {get; set;}
public int grade_id(fk) {get; set;}
public int grade_name {get; set;}

并像这样填充它

public IEnumerable<StudentDomain> GetStudent(int stud_id)
{
var result=  from st in db.Student
join gr in db.Grade on st.grade_id==gr.grade_id
select new StudentDomain
{
stud_id= st.stud_id,
stud_name= st.stud_name,
grade_id= gr.grade_id
grade_name=gr.grade_name
}
return result.ToList();
}

最新更新