두 개의 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 고수님들의 조언 부탁드립니다.