我在将其映射到我的模型时遇到了一些问题。我有一个表示(显然)一个问题的 Question 模型和一个表示可能的问题类型(文本、多项选择、列表、多行文本等)的 QuestionType。
我现在遇到的问题是尝试将与每个 QuestionType 模型关联的选项设置回问题模型。例如,如果 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; }
}
问题类型模型
[Table("QuestionTypes")]
public class QuestionType {
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int QuestionTypeId { get; set; }
[Required]
public String QuestionType { get; set; }
}
问题选项模型
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; }
}
问题上下文
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; }
}