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" 属性。
好吧,这是一个菜鸟问题,但我想不出解决方案。
我有两个实体,用户和团队。用户可以创建团队并邀请其他用户。用户只能属于一个团队,但团队有多个用户。
用户和团队之间最正确的关系是什么?我还需要团队和其他属性中的 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" 属性。