Я нигде не могу найти ответ на этот вопрос, так что вот так.
У меня есть несколько подклассов типа "Ответ".Всем ответам потребуется ссылка на свой вопрос.
По умолчанию, когда ef создает таблицу «Ответы», он создает одну ссылку внешнего ключа на таблицу вопросов с именем FullNameQuestion_QuestionId и одну с именем TextboxQuestion_QuestionId.
Мне нужно, чтобы 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, как это, но он просто создает два столбца, 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; }
}