1

我们正在寻求为我们的 EF Code first 数据模型实施版本控制方案。以以下两个模型为例:

public class Question
{
    public int Id { get; set; }
    public int Version { get; set; }
    public string Text { get; set; }

    public ICollection<Alternative> Alternatives { get; set; }
}

public class Alternative
{
    public int Id { get; set; }
    public int Version { get; set; }
    public string Text { get; set; }
    public bool IsCorrect { get; set; }

    public int QuestionId { get; set; }
    public virtual Question Question { get; set; }
}

这里的想法是一个问题有多种选择。我们想将替代链接到 question's Id,但不是它的Version。同样,一个问题可以引用所有QuestionId与其相等的替代方案Id

如何最好地建模?随意更改模型。

4

1 回答 1

2

我看了几分钟,可能完全错过了船,但这可能是一个选择:

public class Question
{
    public int QuestionId { get; set; }
    public QuestionText Primary { get; set; }
    public ICollection<QuestionText> Alternatives { get; set; }
}

public class QuestionText
{
    public int QuestionTextId { get; set; }
    public ICollection<QuestionTextVersion> Versions { get; set; }
    public QuestionTextVersion CurrentVersion { get; set; }
}

public class QuestionTextVersion
{
    public int QuestionTextVersionId { get; set; }
    public int Version { get; set; }
    public string Text { get; set; }
}

这里的理论是问题和备选方案都组合在一个对象中。问题文本存储在版本中,您应该能够从选定的备选方案中访问当前版本。您可以更改Question对象以提供对所有QuestionText对象的访问权限或仅提供对替代项的访问权限。

再说一次,我可能完全错过了你的观点Alternative

于 2013-04-10T12:56:52.897 回答