在MVC模型中引用用户的最佳方式是什么?



假设我想为我的ASP构建一个评论系统。NET MVC网站。在我的Comment模型中,我想保留对喜欢或不喜欢特定评论的用户的参考。

我现在的模型是:

public class Comment
{
    public int CommentId { get; set; }
    public int PostId { get; set; }
    public string Body { get; set; }
    // Problem lies here
    public virtual ICollection<?> LikedUsers { get; set; }
    public virtual ICollection<?> DislikedUsers { get; set; }
}
<标题>问题:

引用这些用户的最佳方式是什么?

我想到的事情是:

  • 存储喜欢/不喜欢评论的userid列表,如:

    public virtual ICollection<int> LikedUserIds { get; set; }

  • 直接引用这些用户,但这里的问题是,我不知道我应该使用哪种类型的ICollection直接在MVC中引用用户。我想知道如果用户在ASP。. NET身份有一定的数据类型,所以我可以在这里使用?

提前感谢您的建议

您在这里试图存储的是键值对的典型示例。键是用户,值是他对评论的评价。请注意,我说的是评级而不是喜欢/不喜欢,因为这才是抽象领域的含义。如果你后来选择使用"stars"或"score",并且有5个可能的评级值,那么重构将更容易。

:

  1. 使用Dictionary<User, Rating>,其中Rating是一个enum与您的值(喜欢,不喜欢)。
  2. 实现自己的User域对象。ASP。NET提供了IPrincipal,它应该仅用于安全目的。对于用户来说,这不是一个好的领域表示。你总是可以从IPrincipal映射到你自己的User对象,在合适的地方(例如,登录后)。

相关内容

  • 没有找到相关文章

最新更新