1

EF Code ファースト データ モデルのバージョン管理スキームの実装を検討しています。例として、次の 2 つのモデルを取り上げます。

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; }
}

ここでの考え方は、質問には複数の選択肢があるということです。代替案を質問の にリンクしたいが、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; }
}

ここでの理論は、質問と選択肢がすべて 1 つのオブジェクトにまとめられているというものです。質問テキストはバージョンに保存され、選択した代替案から現在のバージョンにアクセスできるはずです。オブジェクトを変更して、すべてのオブジェクトまたは代替オブジェクトのみにQuestionアクセスできるようにすることができます。QuestionText

それからまた、あなたの要点を完全に見逃していた可能性がありますAlternative

于 2013-04-10T12:56:52.897 に答える