如何设计与使用代码首先用户可编辑/可版本内容数据库?
-
28-09-2019 - |
题
我一个开发一个页面,用户将能够添加和修改现有内容,它不是本身,而是那种维基,像这样的编辑能力。
我用EF4,并在最新的CTP新的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;}
...
}
但我没有真正被它说服了..因为我也将有标签,才能删除/反删除帖子,回退,等你知道如何正确合理地设计课程,帮助我版本的内容?
解决方案
目标为简单起见
这是你需要问自己的主要问题是您要显示所有版本所有的时间或最新版本的要求时,他们都最?和这里差不多。在大多数情况下,你只能看到最新的版本。
如果这是与我们的情况一样,我不会那么在乎这些版本。但是,当你希望展示他们都在一个页面上一流的设计或多或少取决于你想显示的方式。它是将要示出的变化和类似的东西。
我宁愿有象的类:
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