【问题标题】:Left join instead of inner join when using entity splitting使用实体拆分时左连接而不是内连接
【发布时间】:2011-06-13 03:17:12
【问题描述】:

作为this问题的补充,我拿了Ladislav Mrnka's answer

问题是 Table1 的某些条目没有显示出来。所以我使用了sql server profiler,看到执行的查询使用了INNER JOIN,我需要做LEFT JOIN

在表 1 中,我有在表 2 中不匹配的数据,并且该数据必须出现。

我该如何解决这个问题?

【问题讨论】:

标签: c# .net entity-framework


【解决方案1】:

关键是 DefaultIfEmpty()

var query =
from t1 in Table1
join t2 in Table2
on t1 equals t2 into NewTable
from result in NewTable.DefaultIfEmpty()
select (Your select)

【讨论】:

  • 为了挽救 OP 的一些挫败感,我已经告诉他 DefaultIfEmpty() 这不是他想要的,所以我删除了我的答案。
【解决方案2】:

在这种情况下,您不能使用前一个问题中提出的实体拆分。实体拆分要求映射实体的两个部分都存在,因此它使用内部连接。修改您的数据库以使每个实体都有这两个部分,或者删除实体拆分并直接使用 Table1Table2 来控制创建的查询。

【讨论】:

    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2013-09-19
    • 2021-02-15
    • 2016-03-21
    • 1970-01-01
    相关资源
    最近更新 更多