如何使用Entity Framework设计评论系统?

时间:2012-03-22 21:23:11

标签: c# asp.net-mvc entity-framework

我正在开发一个网站,用户可以使用Entity Framework对事物进行评论,这些事物是完全独立的类型。例如,用户可以评论:

  • 图片
  • 评论

所以,我想要一个注释类,它对编写注释的用户有一个导航属性,而写入注释的东西(Picutres,Videos,Comments)。

public class User
{
    public AccountInfo AccountInfo;
    public List<Comment> Comments;
}

public class Comment
{
    public int Id;
    public User WrittenBy;
    public Thing(?) WrittenTo; // How should this part be?
}

目的是从User对象访问注释,然后获取写入注释的内容。我可以从像Commentable这样的基类派生所有的类,然后使用继承。但我想知道是否有一个优雅的解决方案。

1 个答案:

答案 0 :(得分:2)

首先,我尝试从应用程序中的业务逻辑中抽象出EF特定的类,可能是通过创建包装类。它将使以下方法更容易,更不用说将核心应用程序代码与数据存储机制分离的优势:

考虑制作一个共同的祖先类型/接口

public interface ICommentable {
 // basically a marker interface like Serializable
}

public class Picture : ICommentable {
 // etc
}

public class Comment {
 // etc
 public ICommentable _commentAttachedTo;
}

同样的事情可以用一些祖先类来完成,即视频,图片,所有都来自一个名为“内容”的抽象类型,然后您可以在创建评论时将其用作参考,如通过推断所有视频,图片等等是一种内容。

这实际上取决于您需要它的灵活性,因为它可能很简单(如上所述),或者如果您说编写CMS,则更加复杂/抽象。

希望这对你有用......