5. DTO와 AutoMapper 그리고 Repository

5-8. 외래 키 참조 추가

이 섹션에서는 .Net Core Web API를 사용하여 “Plant Number” 테이블에 “Plant테이블과의 외래 키 관계를 추가하는 방법을 설명합니다.

이 과정은 데이터베이스 설계에서 중요한 관계 설정 단계를 다룹니다. 다음은 강의 내용의 요약입니다.

  1. 데이터베이스 관계: “Plant” 테이블과 “Plant Number” 테이블 사이에는 1:N (하나의 식물에 여러 개의 식물 번호가 있을 수 있음) 관계가 있습니다. 이 관계를 데이터베이스에 명시적으로 표현하기 위해 “Plant Number” 테이블에 “Plant” 테이블을 참조하는 외래 키를 추가해야 합니다.
  2. 모델 수정: “Plant Number” 모델에 PlantID 필드를 추가하고, 이를 “Plant” 모델의 ID 필드와 연결하는 외래 키로 설정합니다. 이를 위해 ForeignKey 어노테이션을 사용하며, 연결될 “Plant” 모델의 인스턴스를 나타내는 탐색 속성도 추가합니다.
  3. 마이그레이션 실행: 변경사항을 데이터베이스에 적용하기 위해 Entity Framework Core의 마이그레이션 기능을 사용합니다. 새로운 마이그레이션을 추가하고 데이터베이스를 업데이트하여 “Plant Number” 테이블에 PlantID 필드를 추가합니다.
  4. 외래 키 제약 조건 충돌: 마이그레이션 실행 시, 이미 “Plant Number” 테이블에 데이터가 있는 경우 외래 키 제약 조건 충돌이 발생할 수 있습니다. 이는 PlantID 필드에 유효한 참조 값이 없기 때문입니다. 이 문제를 해결하기 위해, 마이그레이션을 실행하기 전에 “Plant Number” 테이블의 데이터를 삭제합니다.
  5. 결과 확인: 마이그레이션을 성공적으로 적용한 후, “Plant Number” 테이블에 PlantID 필드가 추가되었으며, 이 필드가 “Plant” 테이블의 ID 필드를 참조하는 외래 키로 설정된 것을 확인할 수 있습니다.
// 모델 수정
// PlantNumber.cs
public class PlantNumber {
    public int PlantNo { get; set; }
    public string SpecialDetail { get; set; }
    public DateTime CreatedDate { get; set; }
    public DateTime UpdatedDate { get; set; }
​
    [ForeignKey("Plant")]
    public int PlantID { get; set; }
    public Plant Plant { get; set; }
}

패키지 콘솔 실행

PM> add-migration AddForeignKeyPlantTable

PM> update-database

이 과정을 통해 .Net Core Web API와 Entity Framework Core를 사용하여 데이터베이스 테이블 간의 관계를 설정하고, 외래 키를 통해 데이터의 무결성을 유지하는 방법을 배울 수 있습니다.