我有兩個表。就像老師和學生一樣。他們有一對多的關系
兩個班級喜歡:
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; }
}
出于某種原因,我沒有指定他們的外鍵。
但是學生表有一個欄位,例如teacherNo.指定他們的關系
現在我想使用 Linq 查詢教師和學生是否使用外鍵。我只是使用 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();
那么 Join 的等效用途是什么?我嘗試這樣做:
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 查詢教師資訊和關聯學生資料?
我的意思是沒有導航屬性。我的團隊不允許我們使用外鍵。
uj5u.com熱心網友回復:
GroupJoin對 EF Core 有限制,最好通過子查詢來做到這一點:
var data =
from t in _context.TTeachers
where a.Fid == lFid
select new
{
t.name,
list = _context.TTStudent.Where(s => s.TeacherNo == t.No)
}
無論如何,最好使用導航屬性,您定義錯誤比較鍵的風險較小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/522817.html
