Tôi muốn thêm một điều nữa. Trong LINQ to SQL nếu DB của bạn được xây dựng đúng và các bảng của bạn có liên quan thông qua các ràng buộc khóa ngoài, thì bạn không cần phải tham gia vào tất cả.
Sử dụng LINQPad tôi tạo ra các truy vấn sau đây LINQ:
//Querying from both the CustomerInfo table and OrderInfo table
from cust in CustomerInfo
where cust.CustomerID == 123456
select new {cust, cust.OrderInfo}
nào được dịch sang (hơi cắt ngắn) truy vấn dưới đây Chú ý
-- Region Parameters
DECLARE @p0 Int = 123456
-- EndRegion
SELECT [t0].[CustomerID], [t0].[AlternateCustomerID], [t1].[OrderID], [t1].[OnlineOrderID], (
SELECT COUNT(*)
FROM [OrderInfo] AS [t2]
WHERE [t2].[CustomerID] = [t0].[CustomerID]
) AS [value]
FROM [CustomerInfo] AS [t0]
LEFT OUTER JOIN [OrderInfo] AS [t1] ON [t1].[CustomerID] = [t0].[CustomerID]
WHERE [t0].[CustomerID] = @p0
ORDER BY [t0].[CustomerID], [t1].[OrderID]
các LEFT OUTER JOIN
trên.
Nguồn
2015-04-03 13:21:57
LINQ to Entities không nhận ra phương thức DefaultIfEmpty ... –
Ai đó có thể giải thích cách cú pháp này hoạt động như thế nào? Tôi không thấy làm thế nào bất kỳ của những từ khóa kỳ diệu làm cho nó một tham gia trái. Những gì hiện "vào sr" làm gì? Linq làm tôi thất vọng đôi khi :) –
@JoePhillips Tôi có rất nhiều kinh nghiệm về SQL nhưng cố gắng tìm hiểu LINQ giống như lội qua bùn. Tôi đồng ý nó hoàn toàn điên rồ. –