オプションの 1 対多の関係を機能させるのに問題があります。
私のモデルは次のとおりです。
public class Person
{
public int Identifier { get; set; }
...
public virtual Department Department { get; set; }
}
public class Department
{
public int Identifier { get; set; }
...
public virtual IList<Person> Members { get; set; }
}
Department
に 0 または 1を割り当てたいPerson
。割り当てられると、 はの-List にPerson
表示されます。Members
Department
Person
次のように Fluent API を使用して構成しています。
HasKey(p => p.Identifier);
HasOptional(p => p.Department).WithMany(d => d.Members);
Department
の代わりに を構成して、別の方法も試しましたPerson
。
HasMany(d => d.Members).WithOptional(p => p.Department);
ただし、どちらの方法でも例外が発生します。
タイプ 'Person' と 'Department' の間の関連付けのプリンシパル エンドを特定できません。この関連付けのプリンシパル エンドは、リレーションシップ fluent API またはデータ アノテーションのいずれかを使用して明示的に構成する必要があります。
そのように両方を同時に構成すると、次のようになります。
タイプ 'Person' で宣言されたナビゲーション プロパティ 'Department' は、競合する多重度で構成されています。
別のエンティティ タイプの設定と同じ設定を使用してもPerson
機能しますが、そのエンティティ タイプはそれ自体を参照します。
この関係を適切に構成するにはどうすればよいですか?