Visual Studio .net でのリバース エンジニアリング中にリレーションシップのマッピングに問題があります
私は継承を使用します:
public class Quiz : Component
{
public QuizQuestion rootQuestion { get; set; }
public override String getType() { return "quiz"; }
}
プロパティrootQuestion
はマザークラスで指定されておらず、サブクラスにのみ存在します
Quiz
私のsqlserverデータベースにはテーブルとして存在しません(データベースにはQuizQuestions
andComponent
テーブルのみが存在します(私の先生は、このプロジェクトの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");
}
}
ブラウザで実行しようとすると、次のエラーが表示されます:
Invalid column name 'rootQuestion_QuestionID'.
データベース内のテーブル:
成分:
componentId
quizRootQuestionID
TypeId(=discriminator)
クイズの質問
questionID
question
誰かが私が間違っていることを教えてもらえますか?