EF Core : Insert or Update violates FK not null constraint 에러

두 개의 1:N 관계를 맺는 객체가 있습니다.
Team:n - 1:Worker : 관리자
Team:1 - n:Worker : 소속

// 슈도 코드
class Team
{
    Worker? Manger;
    Worker[] Member; 
}

class Worker
{
    Team? Team;
    Team[] Managings;
}
// IEntityModelConfiguration<Team>

// 관리자 관계
builder.HasOne( x => x.Manager)
.WithMany( x => Managings)
.IsRequired(false)
.OnDelete(DeleteBehavior.SetNull);

// 소속 관계
builder.HasMany( x => x.Members)
.WithOne(x=>x.Team)
.IsRequied(false)
.OnDelete(DeleteBehavior.SetNull);

EF 마이그레이션 업데이트 후에, 각 테이블에 foreign key 가 각각 잘 들어가 있습니다.

teams.manager_id
workers.team_id

그런데, 문제는 아래의 코드에서,

dbcontext.Workers.Add( new Worker(){ Team = new Team(), } );
dbcontext.SaveChanges();

Worker 테이블의 Insert, Update 시에 ForeignKey Not Null constraint 위반했다는 에러가 납니다.

참고로, 이 에러에 앞서, 갑자기 Worker 테이블의 Id 에 대해 Primary Key Not Null constraint 위반했다는 에러가 나서,

builder.Property( x => x.Id)
.IsRequired()
.ValueGeneratedOnAdd() // Postgresql의 확장 함수 uuid-ossp() 사용.

builder.HasKey( x=> x.Id);

를 아래로 대체하여,

builder.Property( x => x.Id)
.IsRequired()
//.ValueGeneratedOnAdd() // Postgresql의 확장 함수 uuid-ossp() 사용.
.HasDefaultValueSql("gen_random_uuid()") // Postgresql 의 빌트인 V4 Guid 생성함수

PK 에러는 없어졌는데, 뜬금없이 FK 가 이어지네요.

잘 되다가 갑자기 에러가 터지는 바람에 멘붕 온 상태입니다.

DB 고수님들의 조언 부탁드립니다.

1개의 좋아요

닷넷 문서나 스택 오버플로우에서는 양방향 oneTomany 가 가능하다고 하지만, 실제로는 되지가 않네요.

그래서 별도의 우회 객체를 만들어 삼각 관계를 만들어서 교통 정리를 했습니다.

Worker ----∈ Manager —∈ Team —∈ Worker

1개의 좋아요