Đây là một truy vấn SQL Tôi muốn chuyển đổi để EF4.3Chuyển đổi một LEFT OUTER JOIN để Entity Framework
command = database.GetSqlStringCommand(@"
select
H.AUTHENTICATION_ID,
USERNAME,
PERMISSIONS,
ORGANIZATION_IDENTIFIER,
O.ORGANIZATION_ID
from
AUTHENTICATION H
left join [AUTHORIZATION] T on H.AUTHENTICATION_ID=T.AUTHENTICATION_ID
join ORGANIZATION O on O.ORGANIZATION_ID = T.ORGANIZATION_ID
order by H.AUTHENTICATION_ID");
Dưới đây là LINQ tốt nhất mà tôi có thể đưa ra:
var query = from h in context.Authentications
join t in context.Authorizations on h.AuthenticationId equals t.Authentications.AuthenticationId
join o in context.Organizations on t.Organizations.OrganizationId equals o.OrganizationId
orderby
h.AuthenticationId
select new
{ AUTHENTICATION_ID = (Int16?)h.AuthenticationId,
h.Username,
t.Permissions,
o.OrganizationIdentifier,
OrganizationID = (Int16?)o.OrganizationId
};
tôi biết tôi cần phải kết hợp đầu tiên của tôi tham gia (giữa các ủy quyền & Authentications) vào, cho phép nói x và áp dụng DefaultIfEmpty nhưng không thể thực hiện cú pháp.
EDIT: hình ảnh để làm rõ:
Bất kỳ trợ giúp sẽ được đánh giá cao. Trân trọng.
Cảm ơn bạn đã biết chi tiết. Tôi đã đính kèm một hình ảnh trong câu hỏi của mình. Vui lòng xem nếu nó làm rõ tình hình của tôi. Cảm ơn vì đã trả lời. Nhiều đánh giá cao. – DoomerDGR8
Với hình ảnh tôi nghĩ LINQ tôi đã đăng sẽ hoạt động. Nó sẽ cung cấp cho bạn mọi thứ từ bảng Xác thực, cộng với bất kỳ Ủy quyền phù hợp nào (nếu có) cho Xác thực này, cộng với bất kỳ Tổ chức phù hợp nào cho các Xác thực đó. –
Một cập nhật nhỏ mà bạn có thể cần: như được viết, câu trả lời của tôi sẽ trả về Các ủy quyền không có bản ghi Tổ chức phù hợp - tham gia bên trái thứ hai thay vì tham gia bên trong. Tùy thuộc vào mô hình dữ liệu của bạn mà có thể hoặc không thể là một khả năng mà bạn cần phải lo lắng; nếu đó là một mối quan tâm cho tôi biết. –