私はエンティティ、ポストを持っています:
public class Post
{
[Key]
[Required]
public int PostId { get; set; }
}
別のエンティティがありResponse
ます:
public class Response
{
[Key]
[Required]
public int ResponseId{ get; set; }
public int PostId {get; set;}
public int ParentResponseId {get; set;}
}
アイデアは、Response
どちらかがParentResponseId
定義されているか、OR a PostId
- であり、両方ではありません。Post
は多くのレスポンスを持つことができ、 は多くのレスポンスを持つResponse
ことができます。
プロパティを介して一方から他方に移動する必要はvirtual
なく、遅延読み込みも必要ありません。データベースに設定された制約が必要なだけです。
私はmodelBuilderを初めて使用しますが、これは使用する必要がある場合のようです。私は出発点を持っています:
modelBuilder.Entity<Response>()
.HasOptional(c => c.Post)
.HasForeignKey(u => u.PostId);
modelBuilder.Entity<Response>()
.HasOptional(c => c.Response)
.HasForeignKey(u => u.ParentResponseId);
これは、オプションの一対多を処理する正しい方法ですか? 「いずれかの FK を定義する必要がある」という制約を追加する方法はありますか? ここでのガイダンスは大歓迎です。