У меня есть следующие таблицы:моделирования данных Entity Framework: 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;}
}
У меня есть регистрационный номер в качестве первичного ключа, но как убедиться, что EventID и 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 и memberId была уникальной? Уникальный ключ в этих двух столбцах в базе данных гарантирует это, или это не то, что вы спросили? – HansVG
Вы говорите о составных клавишах? Я думал об этом, но мне нужен отдельный уникальный идентификатор, кроме их комбинации как id. это то, что для Registration.Id. Но мне нужно убедиться, что EventId и MemberantId уникальны. – gdubs
Ну, ваш регистрационный номер - ваш первичный ключ. По умолчанию postgres создаст уникальное ограничение для этого столбца. Затем вы добавляете уникальный ключ в столбцы EventId и ParticipantId поверх этого (в вашей базе данных https://www.postgresql.org/docs/9.6/static/indexes-unique.html.Таким образом, ваш registrationId уникален, и комбинация EventId, MemberantId также уникальна. Если вы используете миграции сущностей сущностей, вы можете указать в своем классе dbcontext, что вы хотите иметь уникальный ключ в этих двух столбцах и позволить Entity Framework генерировать миграцию для вас (или добавить их вручную для миграции) – HansVG