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東西。我什至不能找到谷歌的幫助,因爲我不知道我想要實現的名稱(雙一對一??? !!!)實體框架代碼第一個雙一對一的關係
這個想法是,一個事件必須有2空參與者(僅第一&第二,不是很多),並且每個參與者可能有許多活動
感謝
感謝@拉吉斯拉夫 - mrnka我是從我的工作的賬號回答,所以我不能檢查溶膠(這是我的家庭項目),但我有以下問題:1)Participant.Events現在是Participant.FirstEvents + Participant.SecondEvents ???這會在數據庫中創建額外的字段(或表)? 2)我做屬性可爲空因爲我寧願檢查空值而不是默認值...我應該放棄這個想法嗎?你怎麼處理它? 3)你怎麼稱呼這種關係? – 2012-04-27 16:37:39
1)是的,你的Events集合被分成兩個集合。它不會創建任何額外的DB結構。 2)Null具有您的模型不允許的特殊含義。你不能使用它。 3)這是聯結表(Event)包含附加數據的多對多關係的更復雜版本。 – 2012-04-27 18:20:26
Hi @ Ladislav-Mrnka感謝您的回覆。我終於有時間來實現它,但它不起作用。我刪除了所有空值,將事件拆分爲First&Second,並完成了用戶外鍵,但仍然拋出:引入表'Event'上的FOREIGN KEY約束'FK_Event_Participant_SecondParticipantID'可能會導致循環或多個級聯路徑。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY約束。無法創建約束。你認爲我錯過了什麼? – 2012-04-30 02:32:44