【问题标题】:EF LEFT OUTER JOIN instead of INNER JOIN in one to many relationshipsEF LEFT OUTER JOIN 而不是 INNER JOIN 在一对多关系中
【发布时间】:2015-05-12 15:02:34
【问题描述】:

我有以下 EF 代码优先模型

public class A
{
    public int Id { get; set; }
    public B B { get; set; }
}

public class B
{
    public int Id { get; set; }
    public string Text { get; set; }
}

还有这些映射

modelBuilder.Entity<A>()
     .HasOptional(a => a.B)
     .WithMany();

modelBuilder.Entity<B>()
     .HasKey(b => b.Id);

当我运行这个查询时:

context.As.Include(a => a.B).FirstOrDefault();

结果如下:

SELECT TOP (1) 
    [Extent1].[Id] AS [Id], 
    [Extent2].[Id] AS [Id1], 
    [Extent2].[Text] AS [Text]
FROM  [dbo].[A] AS [Extent1]
LEFT OUTER JOIN [dbo].[B] AS [Extent2] ON [Extent1].[B_Id] = [Extent2].[Id]

我期待获得 INNER JOIN 而不是 LEFT OUTER JOIN

【问题讨论】:

  • 它仍然会返回来自A 表的所有数据,并且不依赖于从B 表返回的任何数据。另一方面,您将只包含 B 表中与您的 A 表有连接的元素,因为这是您的起点。
  • 谢谢。请将此评论作为答案发表,我会接受。

标签: sql-server linq entity-framework join linq-to-sql


【解决方案1】:

它仍将返回 A 表中的所有数据,并且不依赖于从 B 表返回的任何数据。另一方面,您将只包含 B 表中与您的 A 表有连接的元素,因为这是您的起点。

或显示为this image from W3Schools:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 2016-10-31
    • 2015-01-10
    • 2015-07-28
    • 2013-05-02
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多