1

我有一个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; }, 和类似的属性。它很快就会失控。TitleUserEditDate

  • 将 Title、Description 等属性保留为字符串,但将它们设为 CSV 字符串并将所有这些更改填充到更少的属性集中。这意味着更多的处理,但实体更简单。问题在于,将一个 CSV 片段与来自不同属性的相应片段相关联变得很棘手,例如,历史标题必须与其历史描述和日期相匹配。

  • 两者都做,拥有当前的一组属性,以及另一组可空值,如TitleHistory,DescriptionHistory等,它们是旧版本的 CSV 字符串,因此只有在处理历史数据时才会变得复杂。

用户的存储也存在问题,除非我使用 CSV 的 ID 而不是实体。

解决这个问题的最佳方法是什么?有各种技术,例如 sprocs 和“仅插入”表- 但我使用的是 Entity Framework 5,因此更喜欢利用我已经在使用的技术的解决方案。

4

1 回答 1

0

我已经决定使用“仅插入”表。可惜用EF5不容易。

于 2013-01-25T21:15:49.917 回答