我有以下表格:實體框架數據建模:2個外鍵和主鍵
public class Event {
public int Id {get;set;}
}
public class Participant{
public int Id {get;set;}
}
public class Registration{
public int Id {get;set;}
public int EventId {get;set;}
public int PaticipantId {get;set;}
}
我的註冊ID作爲主鍵,但如何確保該事件ID和particpantid是獨特?我想到了複合鍵,但是我需要在註冊時使用Id屬性,因爲我需要將它作爲另一個類/表的外鍵。
約我的DbContext人好奇的是這樣的:
modelBuilder.Entity<Registration>()
.HasRequired(e => e.Participant)
.WithMany(u => u.Events)
.HasForeignKey(e => e.ParticipantId);
modelBuilder.Entity<Registration>()
.HasRequired(e => e.Event)
.WithMany(u => u.Participants)
.HasForeignKey(e => e.EventId);
你想組合eventId和participantId是唯一的嗎?數據庫中這兩列的唯一鍵將保證這一點,或者這不是你要求的嗎? – HansVG
你在談論複合鍵嗎?我在想,但我需要一個單獨的唯一身份證,除了他們的組合作爲一個ID。這就是Registration.Id的用途。但我需要確保EventId和ParticipantId是唯一的。 – gdubs
你的RegistrationId是你的主鍵。默認情況下,postgres將爲此列創建唯一的約束。然後,在EventId和ParticipantId的列上添加一個唯一的密鑰(在您的數據庫https://www.postgresql.org/docs/9.6/static/indexes- unique.html中)。這樣您的registrationId是唯一的,組合EventId,ParticipantId也是唯一的。如果您正在使用實體框架遷移,則可以在您的dbcontext類中指示您希望在這兩列上使用唯一鍵,並讓實體框架爲您生成遷移(或將其手動添加到遷移) – HansVG