首页 文章

EF 6.1 Code First - 指定的列数必须与主键列的数量匹配

提问于
浏览
1

尝试在Entity Framework中迁移数据库时遇到以下错误 .

指定的关联外键列'question_set_id'无效 . 指定的列数必须与主键列的数量匹配 .

我删除了原始主键QuestionSetId并创建了一个复合键关系 . 复合键关系中的列也映射到外键 . 我不确定是什么问题 .

这是关联的实体 .

public class QuestionSet
{
    [Key, Column(Order = 1)]
    public long TitleId { get; set; }

    [ForeignKey("TitleId")]
    public virtual Title Title { get; set; }

    [Key, Column(Order = 0)]
    public long ReviewCycleId { get; set; }

    [ForeignKey("ReviewCycleId")]
    public virtual ReviewCycle ReviewCycle { get; set; }

    public virtual List<Question> Questions { get; set; }
}

DbContext有:

modelBuilder.Entity<QuestionSet>()
            .HasMany(c => c.Questions)
            .WithMany(c => c.QuestionSets)
                .Map(x => x.ToTable("QUESTION_SET_QUESTION")
                    .MapLeftKey("question_set_id")
                    .MapRightKey("question_id"))
        ;

1 回答

  • 4

    QuestionSet 有两个键,但 QuestionSetQuestionSet 只有一个键 .

    MapLeftKey("question_set_id")
    

    用以下内容替换它:

    MapLeftKey(new []{ "question_set_review_cycle_id", "question_set_title_id" })
    

    第一个键是 ReviewCycleId (列的顺序0),第二个键是 TitleId (列的顺序1) .

    它应该解决问题,除非 Question 也有两个键 .

相关问题