Entity framework EF 6.1代码优先-指定的列数必须与主键列数匹配

Entity framework EF 6.1代码优先-指定的列数必须与主键列数匹配,entity-framework,ef-code-first,entity-framework-6.1,Entity Framework,Ef Code First,Entity Framework 6.1,在实体框架中迁移数据库时,我遇到以下错误 指定的关联外键列“question\u set\u id”无效。指定的列数必须与主键列数匹配 我删除了原始的主键QuestionSetId,并创建了一个复合键关系。复合键关系中的列也映射到外键。我不确定是什么问题 这是关联实体 public class QuestionSet { [Key, Column(Order = 1)] public long TitleId { get; set; } [ForeignKey("Tit

在实体框架中迁移数据库时,我遇到以下错误

指定的关联外键列“question\u set\u 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; }
}
公共类问题集
{
[键,列(顺序=1)]
公共长标题ID{get;set;}
[外键(“标题”)]
公共虚拟标题{get;set;}
[键,列(顺序=0)]
public long-ReviewCycleId{get;set;}
[ForeignKey(“ReviewCycleId”)]
公共虚拟ReviewCycle ReviewCycle{get;set;}
公共虚拟列表问题{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"))
        ;
modelBuilder.Entity()
.有很多(c=>c.问题)
.WithMany(c=>c.问题集)
.Map(x=>x.ToTable(“问题\集合\问题”)
.MapLeftKey(“问题集id”)
.MapRightKey(“问题id”))
;

问题集的
有两个键,但问题集的
只有一个键

MapLeftKey("question_set_id")
将其替换为以下内容:

MapLeftKey(new []{ "question_set_review_cycle_id", "question_set_title_id" })
第一个键是
ReviewCycleId
(列的顺序0),第二个键是
TitleId
(列的顺序1)


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

问题集
有两个键,但是
问题集
MapLeftKey
只指定了一个键

MapLeftKey("question_set_id")
将其替换为以下内容:

MapLeftKey(new []{ "question_set_review_cycle_id", "question_set_title_id" })
第一个键是
ReviewCycleId
(列的顺序0),第二个键是
TitleId
(列的顺序1)


它应该可以解决问题,除非
问题
也有两个键。

在我看来,错误是由
问题
实体生成的。此实体应具有指向
问题集
的复合外键。不过,
Question
似乎将Question\u set\u id作为其
QuestionSet
的外键。谢谢,我将研究这种可能性。由于这是一种多对多的关系,我发现了一些其他问题。在我进一步研究之后,我将用更多信息编辑我的帖子。你有:
QuestionSet
有一个复合主键,你在fluent API代码中为Question\u Set\u Question连接表指定了一个外键。在我看来,这个错误是由
Question
实体生成的。此实体应具有指向
问题集
的复合外键。不过,
Question
似乎将Question\u set\u id作为其
QuestionSet
的外键。谢谢,我将研究这种可能性。由于这是一种多对多的关系,我发现了一些其他问题。在我进一步研究之后,我将用更多信息编辑我的帖子。你已经看到了:
QuestionSet
有一个复合主键,你正在为Question\u Set\u Question连接表的fluent API代码中指定一个外键。谢谢你,这很有帮助,事实上解决了这个问题!谢谢,这很有帮助,事实上解决了问题!