最初にコードを使用してユーザー編集/バージョン可能なコンテンツを使用してデータベースを設計する方法は?
-
28-09-2019 - |
質問
私は、ユーザーが既存のコンテンツを追加および変更できるページを開発しています。これは、SEあたりのウィキではなく、編集能力のようなものです。
私はEF4と最新のCTPでの新しいコードの最初のアプローチを使用しているので、これに最適なクラスデザインは何ですか?
私の現在の推測は次のようなものです:
public class VersionableText
{
public int Id { get; set; }
public DateTime Date{ get; set; }
public String Text{ get; set; }
public virtual User User{ get; set; }
}
そして、私の他のエンティティでそれを使用します。
public class Question
{
public int Id {get; set;}
public virtual VersionableText Title {get; set;}
public virtual VersionableText Content{get; set;}
...
}
しかし、私はそれによって本当に確信していません。タグ、削除/削除する能力、ロールバックなども持っているので、コンテンツのバージョンに役立つクラスを適切に設計する方法を知っていますか?
解決
シンプルさを目指してください
あなたが自問する必要がある主な質問は ほとんどの場合、すべてのバージョンを常にリクエストに応じてすべてのバージョンを表示しますか? ここに似ています。ほとんどの場合、最新バージョンのみが表示されます。
これが私たちのケースで同じ場合、私はこれらのバージョンについてそれほど気にしません。しかし、それらをすべて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
. 。タグリストを追加しましたが、質問状態に関連する他のプロセス関連のプロパティを追加しませんでした。プロセスシーケンスに大きく依存します。
所属していません StackOverflow