太多的左外实体框架4加入? [英] Too Many Left Outer Joins in Entity Framework 4?

查看:100
本文介绍了太多的左外实体框架4加入?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个产品的实体,具有0或1畅销书的实体。出于某种原因,当我说:

  db.Products.OrderBy(P => p.BestSeller.rating).ToList();

我得到有一个额外的外部联接SQL(下图)。如果我加上第二个0或1的关系船,为了双方,然后我得到的 4 的外连接。这似乎是每个这样的实体是生产2外连接而不是一个。 LINQ to SQL的行为完全如你所期望的,没有多余的加入。

有没有其他人遇到过,或不知道如何解决它?

  SELECT
[Extent1]。[ID] AS [ID]
[Extent1]。[产品名称] AS [产品名称]
FROM [DBO]。[产品] AS [Extent1]
LEFT OUTER JOIN [DBO]。[畅销商品] AS [Extent2] ON [Extent1]。[ID] = [Extent2]。[ID]
LEFT OUTER JOIN [DBO]。[畅销商品] AS [Extent3] ON [Extent2]。[ID] = [Extent3]。[ID]
ORDER BY [Extent3] [评分] ASC


解决方案

我问朱莉·勒曼在这里回答类似的问题:

请参阅<一个href=\"http://stackoverflow.com/questions/4476595/simple-linq-query-has-duplicated-join-against-same-table\">Simple LINQ查询重复加入对同桌?

I have a product entity, which has 0 or 1 "BestSeller" entities. For some reason when I say:

db.Products.OrderBy(p => p.BestSeller.rating).ToList();

the SQL I get has an "extra" outer join (below). And if I add on a second 0 or 1 relation ship, and order by both, then I get 4 outer joins. It seems like each such entity is producing 2 outer joins rather than one. LINQ to SQL behaves exactly as you'd expect, with no extra join.

Has anyone else experienced this, or know how to fix it?

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

解决方案

I asked Julie Lerman to answer a similar question here:

Please see Simple Linq query has duplicated join against same table?

这篇关于太多的左外实体框架4加入?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆