使用代码优先在 SQL Server 数据库中存储对象列表

本文关键字:数据库 存储 对象 列表 Server SQL 代码 | 更新日期: 2023-09-27 18:33:11

示例

假设多项选择题的答案数量各不相同。一个问题只能有 2 个选择,而另一个问题可以有 10 个选项。

如何将这些多项选择题保存在我的 SQL Server 数据库中?以下模型是否可行?

public class MultipleChoiceQuestion
{
    [Key]
    public Guid Id { get; set; }
    [Required]
    public string Question { get; set; }
    // Suppose I can have 2-10 answers
    [Required]
    public List<string> Answers { get; set; }
}

问题

  • 我们是否可以在 SQL Server 数据库中存储不同长度的对象列表,并在 ASP.NET 中启用了代码优先迁移?
  • 如果不适用,处理此类问题的最佳解决方案是什么?

使用代码优先在 SQL Server 数据库中存储对象列表

您可以创建另一个类型为 PossibleAnswer 的对象,该对象将表示任何特定多项选择题的每个单独答案。 然后,将 MultipleChoiceQuestion 对象中的 Answers 属性修改为"列表"类型。 可能答案可以定义如下:

 public class PossibleAnswer {
      public Guid Id {get;set;}
      public Guid MultipleChoiceQuestionId {get;set;}
      public string Answer {get;set;}
 }