使用继承时,.net中的列名无效
本文关键字:无效 net 继承 | 更新日期: 2023-09-27 18:14:23
我有一个映射关系的问题在visual studio .net中进行逆向工程
我使用继承:
public class Quiz : Component
{
public QuizQuestion rootQuestion { get; set; }
public override String getType() { return "quiz"; }
}
属性rootQuestion
没有在母类中指定,它只存在于子类
Quiz
在我的sqlserver数据库中不作为表存在(只有QuizQuestions
和Component
表存在),(我的老师告诉我这样做这个项目的Java部分)。
但我希望子类测验有一个属性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'.
Tables in my database:
组件:
componentId
quizRootQuestionID
TypeId(=discriminator)
QuizQuestions
questionID
question
谁能告诉我我做错了什么?
如果您忘记将QuizMapper
添加到派生上下文的OnModelCreating
中的模型构建器配置中,您将得到这个异常:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new QuizMapper());
modelBuilder.Configurations.Add(new QuizQuestionMap());
}