Task
エンティティを含む、さまざまなナビゲーション プロパティを持つエンティティがありComment
ます。
public Comment {
public int ID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public DateTime CreateDate { get; set; }
public DateTime LastEditedDate { get; set; }
public virtual User User { get; set; }
}
コメントは編集可能であり、そのようなすべての変更の履歴を保持したいと考えています。Stackoverflow で質問やコメントを編集できるが、変更履歴を保持する方法を考えてみてください。
履歴を保持するということは、より複雑になることを意味し、維持するのが難しくなります。私のオプション:
などのプロパティを追加し、、 、 などに
public virtual ICollection<string> DescriptionHistory { get; set; }
同様のプロパティを追加します。すぐに手に負えなくなります。Title
User
EditDate
タイトル、説明などのプロパティを文字列として保持しますが、それらを CSV 文字列にして、これらすべての変更を少数のプロパティ セットに詰め込みます。これはより多くの処理を意味しますが、エンティティはより単純です。問題は、1 つの CSV フラグメントを別のプロパティの対応するフラグメントに関連付けるのが難しくなることです。たとえば、歴史的なタイトルは歴史的な説明と日付と一致する必要があります。
TitleHistory
両方を実行し、現在のプロパティのセットと、古いバージョンの CSV 文字列である、などの別の nullable のセットDescriptionHistory
を持つため、歴史的なものを扱う場合にのみ複雑になります。
また、エンティティではなく ID の CSV を使用しない限り、ユーザーの保存に関する問題もあります。
この問題への最善のアプローチは何ですか? sprocs や"挿入のみ" のテーブルなど、さまざまな手法がありますが、私は Entity Framework 5 を使用しているため、既に使用しているテクノロジを活用するソリューションを好みます。