我有下面的模式,其中一个appuser可以有许多userpost(用户自己的post),也可以向上/向下投票其他用户的post。
public class AppUser {
public string Id {get;set;}
public ICollection<Post> UserPosts {get; set;}
public ICollection<Post> UpvotedPosts {get;set;}
public ICollection<Post> DownvotedPosts {get;set;}
}
public class Post {
public string Id {get;set;}
public string Content {get;set;}
public string AppUserId {get;set;}
public AppUser AppUser {get;set;}
}
我正在试图找出上/下投票的帖子和appuser之间的关系。我认为应该是1对多(一个应用程序用户可以有很多向上/向下投票的帖子-每个帖子只能有一个应用程序用户)。
但是按照这种思路,它会引起与userposts的冲突——因为我还定义了一个appuser可以有很多post,而一个post只能有一个user。
推荐的方法是什么?
1条答案
按热度按时间yshpjwxd1#
你想要的是一种多对多的关系
AppUser
以及Post
. 您可以引入一个名为Vote
代表多对多关系。以下完全工作的控制台示例演示了此方法:
查看ef核心文档,了解更多关于多对多关系(或wikipedia)的信息。
在实际应用程序中,您可能还需要将密钥的类型从
string
至int
,long
或者Guid
.