假设我想为我的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中的用户是否具有某种数据类型,以便我可以在这里使用?
提前感谢任何建议。
答案 0 :(得分:0)
您要在此处存储的是键值对的典型示例。关键是用户,值是他评论的评级。请注意,我说评级而不是喜欢/不喜欢,因为这就是抽象领域的含义。如果你选择了&#34;明星&#34;或&#34;得分&#34;之后有5个可能的评级值,重构会更容易。
因此:
Dictionary<User, Rating>
Rating
枚举与您的值(喜欢,不喜欢)。User
域对象。 ASP.NET为您提供IPrincipal
,它应该仅用于安全目的。它不是用户的良好域名表示。您始终可以从IPrincipal映射到您自己的User对象(例如,登录后)。