有以下两个具有导航属性的一对一模型:
public class Foo
{
public int Id { get; set; }
public virtual Bar Bar { get; set; }
}
public class Bar
{
public int Id { get; set; }
public virtual Foo Foo { get; set; }
}
Foo具有可选的Bar。
Bar需要Foo。
我在Bar上有以下映射:-
HasRequired(x => x.Foo)
.WithOptional(x => x.Bar)
.Map(x => x.MapKey("FooId"));
这将在 Bar 表上创建名为 'FooId' 的外键。
这一切都很好,除了当不需要时,在所有查询中它会为 Foo 生成带有 'Left Outer Join' 到 Bar 的 SQL。
SELECT ..
[Extent2].[Id] AS [Id1]
FROM [dbo].[Foo] AS [Extent1]
LEFT OUTER JOIN [dbo].[Bar] AS [Extent2] ON [Extent1].[Id] = [Extent2].[FooId]
仔细查看发现它只返回了 Bar 的 Id。
在 Stack Overflow 上搜索 可以看到大多数建议使用 .WithMany
而不是 .WithOptional
,但我需要导航属性。
有什么建议吗?