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:
我有以下 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: