entity framework4中的左外连接太多了?
我有一个产品实体,它有0或1个“BestSeller”实体。 出于某种原因,当我说:
db.Products.OrderBy(p => p.BestSeller.rating).ToList();
我得到的SQL有一个“额外的”外连接(下图)。 如果我添加第二个0或1关系,并按两者排序,那么我得到4个外连接。 似乎每个这样的实体产生2个外连接而不是一个。 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
我问Julie Lerman在这里回答类似的问题:
请参阅Simple Linq查询是否有针对同一表的重复连接?
额外的外连接似乎是多余的。 我认为最好联系entity framework设计团队。 他们可能知道这是一个错误,看看它是否需要在下一个版本中解决。 您可以通过http://blogs.msdn.com/b/efdesign/contact.aspx与他们联系
它可能是一个错误,但它似乎是一个简单的例子,奇怪的是这个bug没有被捕获和修复。
你能检查你的EF型号吗?
BestSeller表是否已添加两次,或者表之间的关系是否重复。