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

时间:2015-10-20 08:42:24

标签: asp.net asp.net-mvc asp.net-identity

假设我想为我的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; }
}

问题:

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

我想到的是:

  • 存储喜欢/不喜欢该评论的UserIds列表,如下所示:

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

  • 直接引用这些用户,但问题在于我不知道我应该使用哪种类型来ICollection直接引用MVC中的用户。我想知道ASP.NET Identity中的用户是否具有某种数据类型,以便我可以在这里使用?

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

您要在此处存储的是键值对的典型示例。关键是用户,值是他评论的评级。请注意,我说评级而不是喜欢/不喜欢,因为这就是抽象领域的含义。如果你选择了&#34;明星&#34;或&#34;得分&#34;之后有5个可能的评级值,重构会更容易。

因此:

  1. 使用Dictionary<User, Rating> Rating 枚举与您的值(喜欢,不喜欢)。
  2. 实施您自己的User域对象。 ASP.NET为您提供IPrincipal,它应该仅用于安全目的。它不是用户的良好域名表示。您始终可以从IPrincipal映射到您自己的User对象(例如,登录后)。