0

在 Visual Studio .net 中进行逆向工程时映射关系时遇到问题

我使用继承:

public class Quiz : Component  
{
    public QuizQuestion rootQuestion { get; set; }
    public override String getType() { return "quiz"; }
}

该属性rootQuestion未在母类中指定,仅存在于子类中

Quiz在我的 sqlserver 数据库中不作为表存在(数据库中只存在QuizQuestionsandComponent表,(我的老师告诉我对这个项目的 java 部分这样做)。

但我希望子类 Quiz 有一个在我的数据库rootQuestion中引用的属性。quizRootQuestion所以这就是我所做的:

public class QuizMapper : EntityTypeConfiguration<Quiz>        
{
    public QuizMapper()               
    {
        this.HasKey(t => t.ComponentID);
        this.HasOptional(c => c.rootQuestion)
            .WithMany().Map(m => m.MapKey("quizRootQuestionID"));     

    }
}

public class QuizQuestionMap : EntityTypeConfiguration<QuizQuestion>
{
    public QuizQuestionMap()
    {
        // Properties
        // Table & Column Mappings
        this.HasKey(t => t.QuestionID);
        this.ToTable("QuizQuestions");
        this.Property(t => t.QuestionID).HasColumnName("questionID");
    }
}

当我尝试在浏览器中运行时出现此错误:
列名“rootQuestion_QuestionID”无效。

我的数据库中的表:

零件:

  componentId                 
  quizRootQuestionID          
  TypeId(=discriminator)

测验问题

questionID                 
question

有人可以告诉我我做错了什么吗?

4

1 回答 1

0

如果您忘记在派生上下文中添加QuizMapper模型构建器配置,您将得到这个异常:OnModelCreating

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new QuizMapper());
    modelBuilder.Configurations.Add(new QuizQuestionMap());
}
于 2013-05-18T13:47:50.903 回答