エンティティ間にオプションの関係を作成しようとしていますが、正しい構文を見つけるのに苦労しています。実際には 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 は 0 個または 1 個の Bar に接続できますが、それ以上接続することはできません。Bar には、LeftFoo と RightFoo を含めるか、どちらかを含めるか、両方とも含めることができます。Foo の Bar プロパティは、Bar によって参照されていない場合は null である必要があり、Bar によって参照されている場合はそれを参照する Bar が含まれている必要があります。
上記のコードでは、Bar は Foo を正しく参照しますが、EF は Foo テーブルに Bar_Id を与え、Bar プロパティは常に null です。
これらのエンティティ クラスをセットアップするためにいくつかの異なる方法を試しましたが、別の Fluent API 呼び出しを使用してこれを機能させましたが、必要な結果が得られません。