我正在与实体框架一起工作,并配置确认基金,技能和资格实体之间的关系。当我创建一个迁移时,额外的外键资格将出现在“确认基金会”表中。我已经为SkillID和资格确定了一个综合主要密钥,但是在迁移期间,正在创建一个额外的外键。

问题描述 投票:0回答:1

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); })

为我工作
    
c# .net entity-framework entity-framework-core
1个回答
0
投票
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.