私はどこにでもこの回答を見つけることができません。ef code firstサブクラスを単一の外部キーにマップする
サブクラスの「回答」タイプがいくつかあります。すべての回答には、質問への参照が必要です。
デフォルトでは、efが "Answers"テーブルを作成すると、FullNameQuestion_QuestionIdという質問テーブルとTextboxQuestion_QuestionIdという名前の質問テーブルへの外部キー参照が1つ作成されます。
TextboxQuestionとFullNameQuestionの両方が同じQuestionId外部キーを使用する必要があります。私はどのようにこれのために動作するようにマッピングを得るかを理解することはできません。
public abstract class Question
{
public int QuestionId { get; set; }
private string Text { get; set; }
}
public class TextboxQuestion : Question
{
public string TextboxValue { get; set; }
public virtual List<TextboxAnswer> TextboxAnswers { get; set; }
}
public class FullNameQuestion : Question
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public virtual List<FullNameAnswer> FullNameAnswers { get; set; }
}
public abstract class Answer
{
public int AnswerId { get; set; }
public int UserId { get; set; }
}
public class TextboxAnswer : Answer
{
public string TextboxValue { get; set; }
}
public class FullNameAnswer:Answer
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
}
私はこのようなTextboxAnswerとFullNameAnswerクラスに質問IDを追加しようとしたが、それはちょうど2つの列、QuestionIdとQuestionId1を作成します。同じ列を共有する方法はありますか?
public class TextboxAnswer : Answer
{
[ForeignKey("Question")]
public int QuestionId { get; set; }
public virtual Question Question { get; set; }
public string TextboxValue { get; set; }
}
public class FullNameAnswer:Answer
{
[ForeignKey("Question")]
public int QuestionId { get; set; }
public virtual Question Question { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
}