我试图通过创建一个小测验应用程序来自我学习c#(asp.net核心),但是我对如何创建复杂的数据模型感到困惑。想象一个带有以下问题集合的测验模型:
public class Quiz
{
public int Id { get; set; }
public Icollection<Question> Questions { get; set; }
}
但是,如果我想要不同类型的问题(多选,对/错,文本答案...),该怎么办?我可以使用继承来缩短某些内容吗?还是我只需要为每种类型的问题创建一个不同的模型并将其放入这个:
Public class Quiz
{
public Icollection<MultipleChoicQuestion> Questions { get; set; }
public Icollection<TrueOrFalseQuestion> Questions { get; set; }
public Icollection<TextQuestion> Questions { get; set; }
}
正如您所标记的,此问题与.NET Core或EF并不完全有关,它与数据建模有关。
对于那些有点不同类型的模型,我建议您按照以下说明进行操作。
这是Quiz
模型。
public class Quiz
{
public int Id { get; set; }
public List<Question> Questions { get; set; }
}
枚举问题
public class Question
{
public int Id { get; set; }
public QuestionType Type { get; set; }
public List<Answer> Answers { get; set; }
}
public enum QuestionType
{
MultipleChoice,
TrueFalse,
Text
}
最后 Answers
public class Answer
{
public int Id { get; set; }
public int QuestionId { get; set; }
public Question Question { get; set; }
public bool IsCorrect { get; set; }
public string Value { get; set; }
}
通过这种方式,应用程序层将处理所有过程,但是您将非常轻松地存储数据。
对于MultipleChoice
问题,您添加多个答案并设置IsCorrect = true
正确的答案。
对于TrueFalse
,仅添加2个答案并设置IsCorrect = true
为正确。
为此Text
,仅添加1个答案并进行设置IsCorrect = true
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句