我正在开发一个网站,用户可以使用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这样的基类派生所有的类,然后使用继承。但我想知道是否有一个优雅的解决方案。
答案 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,则更加复杂/抽象。
希望这对你有用......