【问题标题】:How do I get a right outer join in L2E?如何在 L2E 中获得正确的外部联接?
【发布时间】:2010-06-11 18:13:25
【问题描述】:

我有两个通过 VS 实体数据模型图工具设置的表。我正在尝试进行右外连接,但它不会从第二个表返回结果。

我已经通过图表工具设置了 0..1 到 MANY 的关系。

当我运行 Linq-To-Entities 查询时,它仍然默认为 INNER JOIN。根据我对实体的理解,如果我使用 VS 建立关系,当我加入表时,它应该会根据我提供的关系自动找出连接语法。它似乎没有这样做。

我使用的是 EF v1(不是 Linq-to-Sql)。

我正在运行的查询:

from s in SomeTable 
join t in SomeOtherTable on s.ID equals t.ID
select new { s.MyFieldName, t.MyOtherFieldName }

【问题讨论】:

  • 您正在运行什么查询,究竟是什么?另外,做一个左外连接并交换右/左。
  • 尝试切换并得到相同的结果。我也在使用 LINQPad。不要认为它会过滤掉空值。

标签: linq linq-to-entities


【解决方案1】:

DefaultIfEmpty() 将帮助Entity Framework 4

from s in SomeTable 
join t in SomeOtherTable on s.ID equals t.ID into myTemps
from temp in myTemps.DefaultIfEmpty()
select new { s.MyFieldName, temp.MyOtherFieldName }

【讨论】:

  • 根据我看到的文档,DefaultIfEmpty 仅受 L2S 支持。
  • @Dan:确实...我的示例和答案是使用 EF4 开发的。抱歉,我现在可以看到您指定了 EF1。此答案不会直接回答您的问题,但希望对将来使用 EF4+ 的其他人有所帮助。
猜你喜欢
  • 1970-01-01
  • 2016-06-15
  • 2016-03-22
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多