EF LEFT OUTER JOIN 而不是一对多关系中的 INNER JOIN

EF LEFT OUTER JOIN instead of INNER JOIN in one to many relationships

我有以下 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();

结果如下sql:

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

它仍将 return 来自 A table 的所有数据,并且不依赖于 return 来自 B table 的任何数据。另一方面,您将只包含 B table 中与您的 A table 相关的元素,因为这是您的起点。

或显示为this image from W3Schools