- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
任何人都可以解释为什么按实体连接而不是 id 生成一些非常丑陋的 sql,而实际上从概念上讲它在做您认为是同一件事的事情?例如
按 ID
from companyDirector in CompanyDirectors
join contactAddress in ContactAddresses
on companyDirector.ContactAddress.Id equals contactAddress.Id
select new {companyDirector, contactAddress}
生成
FROM [COMPANY] AS [Extent1]
INNER JOIN [ADDRESS] AS [Extent2] ON [Extent1].[CONTACT_ADDRESS_ID] = [Extent2].[CONTACT_ADDRESS_ID]
按实例
from companyDirector in CompanyDirectors
join contactAddress in ContactAddresses
on companyDirector.ContactAddress equals contactAddress
select new {companyDirector, contactAddress}
生成
FROM [COMPANY] AS [Extent1]
INNER JOIN [ADDRESS] AS [Extent2] ON EXISTS (SELECT
1 AS [C1]
FROM ( SELECT 1 AS X ) AS [SingleRowTable1]
LEFT OUTER JOIN (SELECT
[Extent3].[CONTACT_ADDRESS_ID] AS [CONTACT_ADDRESS_ID]
FROM [ADDRESS] AS [Extent3]
WHERE [Extent1].[CONTACT_ADDRESS_ID] = [Extent3].[CONTACT_ADDRESS_ID] ) AS [Project1] ON 1 = 1
LEFT OUTER JOIN (SELECT
[Extent4].[CONTACT_ADDRESS_ID] AS [CONTACT_ADDRESS_ID]
FROM [ADDRESS] AS [Extent4]
WHERE [Extent1].[CONTACT_ADDRESS_ID] = [Extent4].[CONTACT_ADDRESS_ID] ) AS [Project2] ON 1 = 1
WHERE [Project1].[CONTACT_ADDRESS_ID] = [Extent2].[CONTACT_ADDRESS_ID]
)
这对我来说看起来效率很低,迫使你进入 id 路线。为什么它要进行两次左连接,而不介意一次?
最佳答案
我无法说出 ADO.NET 团队的想法或代码。也就是说,我看到两个可能的问题:
ContractAddresses
中基础表中的 Id
字段(或者可能仅在实体模型中)无法定义为主键。我有点怀疑这就是问题所在,但值得仔细检查。equals
关键字实际上可能没有一个好的方法来比较连接中两个对象之间的相等性。在快速的网络搜索中,我没有找到 确切 等于
用于比较的内容,但是 this MSDN how-to让我相信涉及 Equals
和 GetHashCode
方法(即使不涉及复合键)。如果您只是使用默认的 object.Equals
继承方法,Linq 提供程序必须以某种方式找出引用相等性,我想这可能会导致一些奇怪的结果。不过,我确实喜欢@Craig Stuntz 在他的评论中提出的解决方案。另外,您可能想要获取较长查询的执行计划,看看它是否真的像看起来那么糟糕;查询优化器可能会比代码显示的效果更好。
关于join - LINQ to Entities 连接实例而不是 id 会生成令人讨厌的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5961270/
我看到过关于此的类似帖子,但无法让 Netbeans 在正常工作时停止在我的代码中显示错误消息 "Unable to resolve identifier nullptr"。我已正确启用 C++11,
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个 cucumber 步骤,最近开始失败时 已添加到我的布局中。如果我拿 出来,我的测试都通过了。当我把它放回去时,使用 WebRat 提供的 click_link 方法
我一直致力于创建独立于 .Net 客户端运行的 WCF 服务。感谢 Google 和 StackOverflow,我已经能够创建简单的 xml 和 json 服务,而无需 Soap 包装器和一堆我不需
有人可以向我解释一下 python 在 ubuntu 9.04 中发生了什么吗? 我正在尝试启动 virtualenv,而 --no-site-packages 标志似乎对 ubuntu 没有任何作用
我是一名优秀的程序员,十分优秀!