0

我正在开发一个页面,用户可以在其中添加和修改现有内容,它本身不是 wiki,而是有点像 SO 的编辑能力。

我正在使用最新的 CTP 中的 EF4 和新的 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;}
   ...
}

但我并不真正相信它.. 因为我还将拥有标签、删除/取消删除帖子、回滚等功能。你知道如何正确设计类来帮助我正确地对内容进行版本控制吗?

4

1 回答 1

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; }
}

当我显示所有这些时,我只返回一个按 .ordered 排序的列表LastChange。我添加了标签列表,但没有添加任何其他与问题状态相关的流程相关属性。这在很大程度上取决于工艺顺序。

于 2010-10-05T18:14:23.697 回答