私はLinqtoEntity構文で次のLeftOuterJoin Scenerioを書き込もうとしていますが、それを実現する方法を正確に理解することはできません...これ が最終的に達成しようとしている実用的なSQLです。
SELECT *
FROM Student s LEFT JOIN ParentStudents ps ON ps.StudentId = s.StudentId AND ps.ParentId = '6D279F72-2623-459F-B701-5C77C52BA52F'
WHERE s.TenantId = 3 AND s.FamilyId = '28833312-46eb-4a54-9132-8a7c8037cec5'
太字で強調表示されている部分は、私が倒れる場所です...データベースにParentStudentレコードがあるかどうかに関係なく、生徒に戻ってもらいたいです。
これが機能しない私の最新のLINQtoEntityコードです:
public ICollection<ParentStudentListing> GetParentStudents(Guid FamilyId, Guid ParentId)
{
var query = from s in DataContext.Students
from ps in s.ParentStudents.DefaultIfEmpty()
where s.TenantId == CurrentUser.TenantId && s.FamilyId == FamilyId && ps.ParentId == ParentId
select new ParentStudentListing { StudentId = s.StudentId, FirstName = s.FirstName, MiddleName = s.MiddleName, LastName = s.LastName, RelationshipId = ps.RelationshipId, ParentStudentId = ps.ParentStudentId, isAllowedToPickUp = ps.isAllowedToPickUp, isEmergency = ps.isEmergency, isLiveIn = ps.isLiveIn, ParentId = ps.ParentId };
return query.ToList();
}
このコードは、意図した結果ではないParentStudentレコードがデータベースにない限り、生徒を呼び戻しません。ParentStudentレコードがあるかどうかに関係なく、生徒を呼び戻したいのですが、ParentStudentレコードがある場合は、それらをStudentレコードと結合してほしいです...
ありがとう!