public sealed class ConfirmationSkill
{
private readonly Guid _qualificationId;
private readonly Guid _skillId;
private DateTime _creationDate;
private ConfirmationSkill(Guid qualificationId, Guid skillId, DateTime creationDate)
{
QualificationId = qualificationId;
SkillId = skillId;
CreationDate = creationDate;
}
public Guid QualificationId
{
get => _qualificationId;
private init => _qualificationId = Guard.Against.NullOrEmpty(value);
}
public Guid SkillId
{
get => _skillId;
private init => _skillId = Guard.Against.NullOrEmpty(value);
}
public DateTime CreationDate
{
get => _creationDate;
private set => _creationDate = ConfirmationSkillValidator.ValidateCreationDate(value);
}
internal static ConfirmationSkill Create(Guid qualificationId, Guid skillId, DateTime creationDate)
{
return new ConfirmationSkill(qualificationId, skillId, creationDate);
}
}
您不需要主键即可在此关系表中不重复值。通常,我使用一个唯一的密钥。但是,如果这是一项要求,您可以在关系的一侧这样这样做:
builder.HasMany(x => x.Qualifications)
.WithMany(x => Skills);
.UsingEntity<ConfirmationSkill>(
l => l.HasOne<Skill>().WithMany().HasForeignKey(x => x.SkillId),
r => r.HasOne<Qualification>().WithMany().HasForeignKey(x => x.QualificationId),
j =>
{
j.HasKey(DbNames.SkillIdColumn, DbNames.QualificationIdColumn);
j.ToTable(DbNames.ConfirmationSkillsTable);
})
为我工作