【发布时间】: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