尝试在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"))
;
答案 0 :(得分:4)
QuestionSet
有两个键,但MapLeftKey
QuestionSet
只有一个键。
MapLeftKey("question_set_id")
用以下内容替换它:
MapLeftKey(new []{ "question_set_review_cycle_id", "question_set_title_id" })
第一个键是ReviewCycleId
(列的顺序0),第二个键是TitleId
(列的顺序1)。
它应该解决问题,除非Question
也有两个键。