我有一個產品實體,它有0或1個「BestSeller」實體。出於某種原因,當我說:實體框架4中的左外連接太多?
db.Products.OrderBy(p => p.BestSeller.rating).ToList();
我得到有「額外的」外的SQL連接(如下圖)。如果我添加第二個0或1關係船,並通過兩者訂購,那麼我會得到外部連接。似乎每個這樣的實體都會生成2個外連接而不是1個連接。 LINQ to SQL的行爲與您所期望的完全相同,沒有額外的連接。
有沒有其他人經歷過這個,或知道如何解決它?
SELECT
[Extent1].[id] AS [id],
[Extent1].[ProductName] AS [ProductName]
FROM [dbo].[Products] AS [Extent1]
LEFT OUTER JOIN [dbo].[BestSeller] AS [Extent2] ON [Extent1].[id] = [Extent2].[id]
LEFT OUTER JOIN [dbo].[BestSeller] AS [Extent3] ON [Extent2].[id] = [Extent3].[id]
ORDER BY [Extent3].[rating] ASC
它好像它只做這一個0..1實體。如果有實體的集合,那麼急切地加載集合確實會導致正確的單個外連接。 – 2010-05-27 18:49:39