我正在尝试在与实体之间建立可选关系,但我无法找到正确的语法。实际上我需要一个 0..1 到 0..2 的关系,但我猜一旦我找到了 0..1 到 0..1 的方法,这将是微不足道的。
简化我所拥有的是:
class Foo
{
int Id { get; set; }
//navigation property
virtual Bar Bar { get; private set; }
}
class Bar
{
int Id { get; set; }
int? LeftFooId { get; set; }
[ForeignKey("LeftFooId")]
Foo LeftFoo { get; set; }
int? RightFooId{ get; set; }
[ForeignKey("RightFooId")]
Foo RightFoo { get; set; }
}
一个 Foo 可以连接到零个或一个 Bar,永远不会更多。一个 Bar 可以有一个 LeftFoo 和一个 RightFoo,或者一个或一个都没有。如果 Foo 的 Bar 属性没有被 Bar 引用,则它应该为 null,并且它应该包含在被 Bar 引用时引用它的 Bar。
上面的代码 Bar 正确引用了 Foo,但 EF 为 Foo 表提供了 Bar_Id 并且 Bar 属性始终为空。
我尝试了几种不同的方法来设置这些实体类,并且我使用了不同的 Fluent API 调用来完成这项工作,但我没有得到想要的结果。