我有一个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
等类似的属性。它会很快失控。< / p>
将标题,描述等属性保留为字符串,但将它们设为CSV字符串,并将所有这些更改填充到更少的属性集中。这意味着更多的处理,但实体更简单。问题是将一个CSV片段与来自不同属性的相应片段相关联变得棘手,例如,历史标题必须与其历史描述和日期相匹配。
TitleHistory
,DescriptionHistory
等,它们是旧版本的CSV字符串,所以它只会变得复杂你正在处理历史事物。除非我使用ID而不是实体的CSV,否则用户存储存在问题。
解决这个问题的最佳方法是什么?有各种技术,如sprocs和"insert only" tables - 但我使用的是Entity Framework 5,因此更喜欢利用我已经使用的技术的解决方案。
答案 0 :(得分:0)
我决定使用“仅插入”表。遗憾的是,使用EF5并不容易。