0
class Event{
int? EventID{get;set;}
int? FirstParticipantID{get;set;}
Participant FirstParticipant{get;set;}
int? SecondParticipantID{get;set;}
Participant SecondParticipant{get;set;}
int? CreatedByID{get;set;}
User CreatedBy{get;set;}
}
class Participant{
int? ParticipantID{get;set;}
List<Event> Events{get;set;}
int? CreatedByID{get;set;}
User CreatedBy{get;set;}
}
protected override void OnModelCreating(DbModelBuilder modelBuilder){
modelBuilder.Entity<Event>().HasRequired(m => m.FirstParticipant).WithMany(m => m.Events).HasForeignKey(m => m.FirstParticipantID);
modelBuilder.Entity<Event>().HasRequired(m => m.SecondParticipant).WithMany(m => m.Events).HasForeignKey(m => m.SecondParticipantID);
modelBuilder.Entity<Event>().HasRequired(m => m.CreatedBy);
modelBuilder.Entity<Participant>().HasRequired(m => m.CreatedBy);
}
私には非常にはっきりしているようですが、EF(とSQL)はhasmanny/hasrequiredのものにどのような動きをしても不平を言っています。私は私が実装しようとしているものの名前を知らないので、私はgoogleの助けを見つけることができません(!!!!)エンティティフレームワークのコード最初に2つ1対1の関係
アイデアは、 nullの参加者(第一&二だけで、多くはない)と、各参加者は、多くのイベント
おかげ
を有することができること
感謝をution今、私の家のプロジェクトのためですが、私は以下の質問をしています:1)参加者。イベントは今やParticipant.FirstEvents + Participant.SecondEventsになりますか?これはデータベースに余分なフィールド(またはテーブル)を作成しますか? 2)私はデフォルト値ではなくヌルをチェックすることを好むため、プロパティをNullableにする...このアイデアを放棄するべきか?どのように実際にそれを処理していますか? 3)あなたはこの関係をどのように呼んでいますか? –
1)はい、イベントコレクションは2つのコレクションに分かれています。追加のDB構成は作成されません。 2)ヌルは、あなたのモデルによって許可されていない特別な意味を持っています。それを使うことはできません。 3)これは、ジャンクション・テーブル(イベント)に追加のデータが含まれている多対多リレーションのちょっと複雑なバージョンです。 –
こんにちは@ Ladislav-Mrnkaあなたの応答に感謝します。ついにそれを実装する時間がありましたが、うまくいかなかったのです。私はすべてのnullableを削除し、最初と2番目にイベントを分割し、ユーザーの外部キーを完了しましたが、まだスローされます:FOREIGN KEY制約 'FK_Event_Participant_SecondParticipantID'を 'Event'テーブルに導入すると、サイクルまたは複数のカスケードパスが発生する可能性があります。 NO DELETE NO ACTIONまたはUP UP NO NO ACTIONを指定するか、他のFOREIGN KEY制約を変更してください。制約を作成できませんでした。私は何かが不足していると思いますか? –