Ich möchte noch etwas hinzufügen. In LINQ to SQL müssen Sie, wenn Ihre Datenbank ordnungsgemäß erstellt wurde und Ihre Tabellen über Fremdschlüsseleinschränkungen miteinander verknüpft sind, keine Verknüpfung durchführen.
Mit LINQPad Ich habe die folgende LINQ-Abfrage:
//Querying from both the CustomerInfo table and OrderInfo table
from cust in CustomerInfo
where cust.CustomerID == 123456
select new {cust, cust.OrderInfo}
die mit dem (leicht abgeschnitten) Abfrage unter
-- 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]
Hinweis übersetzt wurde die LEFT OUTER JOIN
oben.
LINQ to Entities erkennt die Methode DefaultIfEmpty ... –
Kann jemand erklären, wie diese verrückte Syntax funktioniert? Ich kann nicht sehen, wie irgendeines dieser Schlüsselwörter es magisch zu einem Linksbündnis macht. Was macht das "in sr"? Linq frustriert mich manchmal :) –
@JoePhillips Ich habe viel SQL-Erfahrung, aber zu versuchen LINQ zu lernen ist wie durch Matsch waten. Ich stimme zu, dass es absolut verrückt ist. –