내용 보기

작성자

관리자 (IP : ::ffff:172.17.0.1)

날짜

2020-07-07 07:39

제목

[ASP.NET Core] Introducing FOREIGN KEY constraint ... may cause cycles or multiple cascade paths 오류 발생시


Code First작업으로

A테이블이 User테이블을 FK로 참조하고
B테이블이 A테이블과 User테이블을 FK로 참조하는 관계 구조에서

A테이블 모델안에 B테이블의 리스트를 갖을 경우 DB마이그레이션 작업시

Introducing FOREIGN KEY constraint '{FK명}' on table '{B테이블}' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.

오류가 발생된다.

A과 B의 관계 구조에서 User테이블을 같이 참조하게 될 경우 DB마이그레이션 시 먼저 FK를 삭제 후 내부적으로 마이그레이션 작업시 다시 관계가 생성되어야 한다.

DBContext에서 OnModelCreating메서드를 재정의 해서 다음과 같이 해결 할 수 있다.

1
2
3
4
5
6
7
8
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
            modelBuilder.Entity()
                .HasOne(s => s.Note)
                .WithMany(ta => ta.NoteCommentList)
                .HasForeignKey(u => u.NoteNo)
                .OnDelete(DeleteBehavior.Restrict);
}
cs

위 코드로 해결!

출처1

출처2