Asp.net代码首先多对一

时间:2015-12-28 10:48:42

标签: c# ef-code-first

这是一个菜鸟问题,但我无法找到解决方案 我有两个实体,用户和团队。用户可以创建团队并邀请其他用户。用户只能属于一个团队,但团队有多个用户。 用户和团队之间最正确的关系是什么?我还需要团队和其他属性中的DateJoin。我应该创建第三个表(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; }

    }

但是第三张表意味着多对多关系...

1 个答案:

答案 0 :(得分:1)

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

但是,如果您认为将来可能会更改此政策,那么我建议您使用多对多关系。这样您还可以通过简单地使用&#34; DateLeave&#34;来跟踪您的用户所属的先前团队。以物业为例。