Asp.net 先编码多对一

Asp.net code first many to one

好吧,这是一个菜鸟问题,但我想不出解决方案。
我有两个实体,用户和团队。用户可以创建团队并邀请其他用户。用户只能属于一个团队,但团队有多个用户。 用户和团队之间最正确的关系是什么?我还需要团队和其他属性中的 DateJoin。我应该创建第三个 table(TeamMembers) 吗? 这是我试过的代码:

    public class TeamMember
    {
        public int Id { get; set; }

        [ForeignKey("Team")]
        public int TeamId { get; set; }

        public Team Team { get; set; }

        [ForeignKey("User")]
        public string UserId { get; set; }

        public User User { get; set; }

        public DateTime DateJoin { get; set; }

        public RoleEnum  MemberRole { get; set; }
    }

    public enum RoleEnum
    {
        Capitan = 1,
        Main,
        Sub
    }

团队有成员列表:

    public class Team
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public int Score { get; set; }

        public ICollection <TeamMember> Members { get; set; }

    }

但第三个 table 表示多对多关系...

如果用户只能属于一个团队,那么这是正确的格式。

但是,如果您认为将来可能会更改此政策,那么我建议您使用多对多关系。这还可以让您跟踪您的用户以前所属的团队,例如,只需使用 "DateLeave" 属性。