내 모델에이 문제를 매핑하는 데 문제가 있습니다. Question (명백하게) 질문을 나타내는 Question 모델과 가능한 질문 유형 (텍스트, 객관식, 목록, 여러 줄 텍스트 등)을 나타내는 QuestionType이 있습니다.모델에 0 대 다수 관계 매핑
지금 문제는 각 QuestionType 모델과 관련된 옵션을 Question Model (질문 모델)로 다시 설정하려고하는 것입니다. 예를 들어 QuestionType이 목록 유형이고 목록에 세 개의 요소가 포함 된 경우 해당 요소를 Question 모델에 다시 연결하려고합니다. 내가 가지고있는 문제는 모든 질문이 QuestionOptions 변수를 설정할 필요가 없다는 것입니다. 예를 들어, 간단한 텍스트 질문 (코드에 표시되지 않음)의 경우.
어떻게해야합니까?
질문 모델
[Table("Questions")]
public class Question {
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int QuestionId { get; set; }
[Required]
public String Question { get; set; }
public int QuestionTypeId { get; set; }
[ForeignKey("QuestionTypeId")]
public virtual QuestionType QuestionType { get; set; }
public virtual ICollection<QuestionOptions> QuestionOptions { get; set; }
}
QuestionType 모델
[Table("QuestionTypes")]
public class QuestionType {
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int QuestionTypeId { get; set; }
[Required]
public String QuestionType { get; set; }
}
QuestionOptions 모델
public abstract class QuestionOptions {
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int OptionId { get; set; }
public int? QuestionId { get; set; }
[ForeignKey("QuestionId")]
public virtual Question Question { get; set; }
}
[Table("questionType_List")]
public class ListQuestion : QuestionOptions {
[Required]
public String Item { get; set; }
}
QuestionContext 개인적으로
public class QuestionContext : DbContext {
public QuestionContext() : base("DefaultConnection") { }
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
Database.SetInitializer<QuestionContext>(null);
public DbSet<Question> Questions { get; set; }
public DbSet<QuestionType> QuestionTypes { get; set; }
public DbSet<ListQuestion> ListQuestions { get; set; }
}
QuestionOptions은 본질적으로 QuestionType의 동적 옵션입니다. 따라서 ListQuestion의 경우 QuestionOptions은 목록 항목 목록입니다. 무언가가 멀티 라인인지 싱글 라인인지를 결정하는 것은 QuestionOption 모델이 아니라 QuestionType 모델에 의해 결정됩니다 – theStig