0

私は、ユーザーが既存のコンテンツを追加および変更できるページを開発しています。これは wiki ごとではなく、SO の編集機能のようなものです。

私は最新の CTP で EF4 と新しい Code First アプローチを使用していますが、これに最適なクラス設計は何でしょうか?

私の現在の推測は次のようなものです:

public class VersionableText
{
   public int Id { get; set; }
   public DateTime Date{ get; set; }
   public String Text{ get; set; }

   public virtual User User{ get; set; }  
}

そして、それを他のエンティティで使用します。SO コンテキストでは、このようなものになる可能性があります

public class Question
{
   public int Id {get; set;}
   public virtual VersionableText Title {get; set;}
   public virtual VersionableText Content{get; set;}
   ...
}

しかし、私はそれに本当に納得していません..タグ、投稿の削除/削除取り消し、ロールバックなども行う予定なので、コンテンツを適切にバージョン管理するのに役立つクラスを適切に設計する方法を知っていますか?

4

1 に答える 1

1

シンプルさを目指す

自問する必要がある主な質問は、常にすべてのバージョンを表示するのか、それともほとんどの場合最新バージョンを要求に応じてすべて表示するのかということです。ここに似ています。ほとんどの場合、最新バージョンしか表示されません。

これが私たちの場合と同じである場合、これらのバージョンについてはあまり気にしません。しかし、それらすべてを 1 ページのクラス デザインに表示したい場合は、多かれ少なかれ表示方法によって異なります。変化などを見せてくれるのでしょうか。

私はむしろ次のようなクラスが欲しいです:

public class Question
{
    public int Id { get; set; }
    public QuestionStatus Status { get; set; }
}

public class QuestionHistory
{
    public Question Question { get; set; }

    public string Title { get; set; }
    public string Content { get; set; }

    public User Author { get; set; }

    public DateTime Created { get; set; }

    public IList<Tag> Tags { get; set; }
}

そして、それらすべてを表示するときは、これらの順序付けられたリストを返すだけLastChangeです。タグリストを追加しましたが、質問の状態に関連する他のプロセス関連のプロパティは追加しませんでした。それはプロセスシーケンスに大きく依存します。

于 2010-10-05T18:14:23.697 に答える