아래와 같은 경우, 두 엔티티 간의 관계를 어떻게 설정해야 할까요?
class Team
{
public Worker? Supervisor;
public IEnumerable<Worker> Members;
}
class Worker
{
public Team Team;
}
팀-팀장의 관계에서는 Many-to-One(Zero) 인 거 같고,
팀-팀원의 관계에서는 One-to-Many 인 것 같은데 말이죠.
똘똘말이해서 Many-to-Many 인가요?
멤버로서는 하나의 팀에 소속되어 있지만,
팀장으로서는 여러 팀을 지휘할 수 있습니다.
팀장은 멤버 역할을 할 수도 아닐 수도 있습니다.
그러면, teamId-supervisorId 를 위한 관계 테이블이 필요한 데,
이 경우, 팀-팀장이 Many-to-Many 관계가 되지 않나요?
그리고, 팀-팀원에 대한 관계 설정은 빠지게 되는 것 같습니다.
dimohy
#6
다 대 다의 관계는 식별관계에서만 그렇게 말하기 때문에 비식별의 경우 여러 관계가 있다고 하면 될 것 같아요.
1개의 좋아요
dimohy
#7
위의 테이블로 표현이 됩니다.
Team : Teamid(팀 (들))은 - 하나의 SupervisorId(팀장)을 갖는다.
Worker: WorkerId(팀원 (들))은 - 하나의 TeamId(팀)을 갖는다.
덕분에 부드럽게 해결했습니다. ^^
Worker에서,
public Team? Team { get; set; }
public IEnumerable<Team> Supervisings { get; set; } = Array.Empty<Team>();
Team 에서,
public Worker? Supervisor { get; set; }
public virtual IEnumerable<Worker> Members { get; set; } = Array.Empty<Worker>();
Team의 모델 빌더
builder.HasMany<Worker>(t => t.Members)
.WithOne( w => w.Team);
builder.HasOne<Worker>(t => t.Supervisor)
.WithMany(w => w.Supervisings);
1개의 좋아요