c# - Entity Framework 4 中的左外连接太多了吗?

标签 c# entity-framework optimization entity-framework-4

<分区>

我有一个产品实体,其中包含 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

最佳答案

那个额外的外部连接看起来确实是多余的。我认为最好联系 Entity Framework 设计团队。他们可能知道这是否是一个错误,并查看它是否需要在下一个版本中解决。您可以通过 Link 联系他们

关于c# - Entity Framework 4 中的左外连接太多了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2916830/

相关文章:

entity-framework - SQL Profiler 在读取 IEnumerable 列表之前显示查询

python - Tensorflow Adam 优化器

c# - MVC4 从服务器到客户端的回调

c# - "Invalid column name"使用 EntityFramework.Extended 执行更新时出错

entity-framework - EF4 和 MVC3 - 我需要存储库模式吗?

entity-framework - Entity Framework 4 中是否允许可以为空的外键?

python - 优化盈亏平衡点 : iterate many times over set or convert to list first?

algorithm - 算法时间复杂度总是 O(1) 优于 O(n)?

c# - 确定神经网络的适当数量的神经元

c# - EF 中的 DbContext 是否应该具有较短的生命周期?