我有一个问题,将其映射到我的模型。我有一个问题模型,代表(显然)一个问题,一个问题类型代表可能的问题类型(文本,多项选择,列表,多行文本,等等......)。
我现在遇到的问题是尝试将与每个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; }
}
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; }
}
答案 0 :(得分:1)
我个人会对所有问题都有QuestionOptions,即使这是表格中的空白条目,也可能是某种标识符,可以让你知道它的多行或单行文字。