2
我有點問題將它映射到我的模型。我有一個表示(顯然)問題的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; }
}
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將是列表的項目列表。確定是否是多行或單行是由QuestionType模型確定,而不是由QuestionOption模型確定 – theStig