Foo
それ自体への 2 つのオプションの参照を持つことができる があります:ParentId
とRootId
.
public class Foo
{
[Key]
public int FooId { get; set; }
public int? ParentId { get; set; }
[ForeignKey(nameof(ParentId))]
public virtual Foo Parent { get; set; }
public int? RootId { get; set; }
[ForeignKey(nameof(RootId))]
public virtual Foo RootFoo { get; set; }
// ...
}
1 つあれば問題なく動作しますが、2 つ目の自己参照を導入するとエラーが発生します。
タイプ「Model.Foo」と「Model.Foo」の間の関連付けのプリンシパル エンドを特定できません。この関連付けのプリンシパル エンドは、リレーションシップ fluent API またはデータ アノテーションを使用して明示的に構成する必要があります。