我有两个表。就像教师和学生一样。他们有一对多的关系
两个类喜欢:
public class TTeachers
{
[Key]
public long Id {get; set;}
public string? No { get; set; }
public string? Name { get; set; }
}
public class TTStudent
{
[Key]
public long Id {get; set;}
public string? TeacherNo{ get; set; }
public string? Name{ get; set; }
}
由于某种原因,我没有指定它们的外键。
但是student表有一个字段,例如teacherNo。指定它们的关系
现在我想用Linq来查询Teacher And Student如果我用外键的话。我只是用Include来查询Student。例如:
var data = (from t in _context.TTeachers.Include(s=> t.Students)
where t.ID == ID
selet new {
t.ID ,
t.Name,
t.Students,
}).First();
那么什么是等价的使用连接?我尝试这个:
var data = from t in _context.TTeachers
join s in _context.TTStudent on t.No equals s.TeacherNo into student
where t.ID == ID
select new { t.Name, list = students }
它将运行并出错。
如何使用Join查询教师信息和关联的学生数据?
我的意思是没有导航属性。我的团队不允许我们使用外键。
1条答案
按热度按时间vuv7lop31#
GroupJoin
在EF Core中有限制,最好通过子查询来实现:无论如何,最好使用导航属性,这样定义了错误比较键的风险就更小。